当前位置: 首页 > web >正文

5.3_3由遍历序列构造二叉树

不同二叉树的中序、前序、后序、层次遍历序列可能相同:

一个二叉树对应的中序、前序、后序、层次遍历是唯一的,但是一个中序、前序、后序、层次序列对应的二叉树形态不是唯一的,即不能由某一种序列推出唯一二叉树形态

 由遍历序列构造二叉树:

如下必须有中序遍历才能构造二叉树

前序+中序序列构造二叉树:

例子1,第2、3张图例子:

由前序遍历(根左右)可知A是根节点,由中序遍历(左根右)知BDC是A的左子树、E是A的右子树,即可得到第2张概括图,再去拆分BDC左子树,由左子树的前序遍历序列长度=左子树的中序遍历序列长度得前序遍历序列中的DBC是A的左子树,由前序序列可知D是根节点,再由中序遍历BDC顺序知B是D的左子树、C是B的右子树,最终得到第3张图。

即由前序序列得到根节点和各子树的根节点,再由中序遍历得到根节点的左右子树节点

例子2:

由前序遍历知D是根节点,由中序遍历知EAF是D的左子树节点,HCBGI是D的右子树节点,再由前序序列知在前序序列中AEF是D的左子树,由前序序列知A是根节点,由中序序列知E和F分别是A的左右子树,再看A的右子树,由前序序列知BCHGI中B是根节点,由中序序列知HC是B的左子树、GI是B的右子树,再去拆分HC,再由前序序列CH知C是根节点,由中序序列知H是C的左子树,C后边除了B没有其他节点,即C没有右子树,再去拆分GI,由前序序列知GI中的G是根节点,由中序序列知G作为根节点右边是I左边除B之外无其他节点,则I是G的右子树G没有左子树

 后序+中序序列构造二叉树:

原理上同由后序遍历序列确定根节点,由中序序列确定各个根节点的左右节点

例子3:

如下由后序序列(左右根)知最后一个节点D是根节点,由中序序列知D的左边EAF是D的左子树,D的右边HCBGI是D的右子树,先看D的左子树,由左子树后序序列长度=左子树中序序列长度知在后序序列中EFA是左子树,且由后序序列左右根知A是根节点,由中序序列知A的左边是E为A的左子树,A的右边是F即F为A的右子树,再看D的右子树HCBGI,由相同长度后序序列HCIGB知B是根节点,由中序序列知HC是B的左子树、GI是B的右子树,再看HC,由后序序列知C是根节点,由中序序列知H是C的左子树,C的右边除了B之外无其他节点即C无右子树,再看GI,由后序序列IG知G是根节点,由中序序列知I是G的右子树,G的左边除B之外无其他节点即G无左子树

 

  层序+中序序列构造二叉树:

原理同上,通过层序遍历找根节点,由中序序列确定各个根节点的左右节点

如下例4:

层序遍历一层层的,第一个出现的是根节点即D,由中序序列知EAF是D的左子树、HCBGI是D的右子树,先看D的左子树,由层序遍历知第2、3节点为D的左子树和右子树的根节点,分别是A、B,再通过中序遍历知E、F分别是A的左子树,HC和GI分别是B的左子树、右子树,再通过层序遍历知E、F的后边是C和G则C和G为根节点(或者说C在H前边所以C是H的根节点,G在I前边G是I的根节点?),再由中序遍历知H在C的左边即H是C的左子树,C无右子树,I是G的右子树,G无左子树

例5:

如下由层序序列知第一个节点A是根节点,由中序序列知A的左边无其他节点即A无左子树,则右边右子树是CBED序列,再去看层序序列知A后边跟着的B是右子树的根节点,由中序序列知C是B的左子树,ED是B的右子树,再由层序序列知先排C,C的后边是D即C和D一层D是根节点,由中序序列知E在D的左边E是D的左子树,D的右边无其他节点即D没有右子树

知识回顾:

 

如果两两组合中没有中序遍历构造不成唯一的二叉树:

 

。。。。。。。。。。。。。。 

 

http://www.xdnf.cn/news/10927.html

相关文章:

  • 集合类基础概念
  • SMART原则讲解
  • centos挂载目录满但实际未满引发系统宕机
  • leetcode491.递增子序列:HashSet同层去重与递增条件的双重保障
  • 【python】三元图绘制(详细注释)
  • 春秋云镜 Certify Writeup
  • 光耦电路学习,光耦输入并联电阻、并联电容,光耦输出滤波电路
  • Vert.x学习笔记-Verticle原理解析
  • 一、类模板
  • ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
  • 【数据结构知识分享】顺序表详解
  • 《中国城市统计年鉴》面板数据(1985-2024)
  • 如何安装huaweicloud-sdk-core-3.1.142.jar到本地仓库?
  • 板凳-------Mysql cookbook学习 (九--3)
  • AtCoder Beginner Contest 408(ABCDE)
  • Ⅲ-2.计算机二级选择题(三大结构之选择结构)
  • BeeWorks:私有化即时通讯,筑牢企业信息安全防线
  • 运维视角下的广告系统之理解广告索引级联
  • python实现基于声音识别的腕带式打鼾干预装置设计与实现
  • browser-use Agent 日志链路分析
  • CET6 仔细阅读 24年12月第一套-C1 大脑这一块
  • 【开发心得】筑梦上海:项目风云录(18)
  • 金蝶云星空对接旺店通案例分享
  • 使用 Golang `testing/quick` 包进行高效随机测试的实战指南
  • 第五章 5.Subnetting (CCNA)
  • 基于c++面向对象的设计(下)
  • FreeRTOS,其基本概念、定义、性质、定理
  • 【运维】统信UOS操作系统aarch64自制OpenSSH 9.6p1 rpm包(含ssh-copy-id命令)修复漏洞
  • 构建检索增强生成(RAG)应用:第二部分
  • agent mode 代理模式,整体要求,系统要求, 系统指令