【例题】已知二叉树的先序序列和中序序列构造二叉树
做下列例题之前请先转到:【教程】了解原理和方法。然后再做下面的例题。
【例题1】一棵二叉树的先序遍历序列为EFHIGJK,中序遍历序列为HFIEJKG,则该二叉树根结点的右孩子为()
A. H
B. E
C. F
D. G【答案】D
解析:
思路:题目给出了先序序列和中序序列求根结点的右孩子。可以通过利用先序序列和中序序列构造出二叉树,然后根结点的右孩子就一目了然了。
详细过程如下:
step1:先序序列为:EFHIGJK,中序序列为:HFIEJKG
通过这两个序列可以得出:E是根结点,HFI是E结点的左子树,JKG是E结点的右子树。
如下图:
step2:先看E结点的左子树HFI
该左子树HFI的先序序列为:FHI,中序序列为:HFI
通过这两个序列可以得出:F是根结点,H是F结点的左子树,I是F结点的右子树。
如下图:
step3:再看E结点的右子树JKG
该右子树JKG的先序序列为:GJK,中序序列为:JKG
通过这两个序列可以得出:G是根结点,JK是G结点的左子树,G结点的右子树为空
如下图:
step4:下面再看G结点的左子树JK,将它分解。
该左子树JK的先序序列为:JK,中序序列为:JK
通过这两个序列可以得出:J是根结点,K是J结点的右子树,J结点的左子树为空。
如下图:
至此二叉树构造成功,综上:该二叉树根结点的右孩子为:G。
说明:
其实从一开始,我们只需要先分析E结点的右子树,即可很快得到答案,或者说在step3的时候我们就能够得到正确答案了,只是,在我看来答案确实很重要,但做笔记嘛,还是希望有始有终。(强迫心理)
可能想到的问题:对于E结点的左子树和右子树是怎么得出他们的先序序列和中序序列的,以及后面的各个结点的子树是怎么得到他们的先序序列和中序序列的,还有如何通过先序序列和中序序列就能判断出根结点和左右子树?这些问题,页面上方的超链接,转到的文章应该能解答。为了节约时间,就不每篇文章都赘述了。
【例题2】已知一棵二叉树的先序序列与中序序列分别如下,试画出此二叉树。
先序序列: ABCDEFGHIJ
中序序列:CBEDAGHFJI【答案】
详细过程:
【例题】已知二叉树的先序序列和中序序列构造二叉树相关推荐
- 二叉树的建立(已知前序序列和中序序列)
已知二叉树前序序列和中序序列递归创建二叉树 #include<bits/stdc++.h> using namespace std; typedef struct Node{char da ...
- 已知前序(后序)遍历序列和中序遍历序列构建二叉树(Leetcode相关题目)
1.文字描述: 已知一颗二叉树的前序(后序)遍历序列和中序遍历序列,如何构建这棵二叉树? 以前序为例子: 前序遍历序列:ABCDEF 中序遍历序列:CBDAEF 前序遍历先访问根节点,因此前序遍历序列 ...
- 已知二叉树先序序列和中序序列,求后序序列
回答了百度知道上的一个提问,原题是这样的: 当一棵二叉树前序序列和中序序列分别为HGEDBFCA和EGBDHFAC时,其后序序列为什么?当一棵二叉树前序序列和中序序列分别为HGEDBFCA和EGBDH ...
- 二叉树的遍历(前序、中序、后序、已知前中序求后序、已知中后序求前序)
二叉树的遍历(前序.中序.后序.已知前中序求后序.已知中后序求前序) 之前的一篇随笔(二叉树.前序遍历.中序遍历.后序遍历)只对二叉树的遍历进行了笼统的描述,这篇随笔重点对前.中.后序的遍历顺序进 ...
- 已知前序中序求层序 c语言递归,二叉树的遍历:前序,中序,后序,层序--包括递归和非递归实现...
# re: 二叉树的遍历:前序,中序输出有点问题,但是不知道到怎么修改,想请教各位大神 回复 更多评论 #include"stdio.h" #include"mall ...
- 二叉树(前序遍历序列、中序遍历序列、后序遍历序列、层次遍历序列、深度、叶子数)
Description 已知二叉树的一个按前序遍历输入的字符序列,如abc,de,g,f, (其中,表示空结点).请建立二叉树,并输出建立二叉树的前序遍历序列.中序遍历序列.后序遍历序列.层次遍历序列 ...
- java二叉树合并_Java(树的前中后序遍历构造二叉树题型整合)前序和中序、中序和后序、前序和后序遍历序列构造二叉树算法整合归纳...
前言 二叉树各种花里胡哨的算法题真的把我搞晕了,今天特地整理出一类有关二叉树的算法题,希望能帮助阅读到此文章的人,今后不再受此类题型的困扰. 一.题目类型 已知二叉树的两种遍历序列,请根据该序列构建二 ...
- 树与二叉树——由前序序列和中序序列确定一刻二叉树
确定一棵二叉树的方法可以使用扩展二叉树来构建以可二叉树,也可以通过由前序序列和中序序列或者由前序序列和后序序列来确定一棵二叉树. 例如由前序序列和中序序列来确定一棵二叉树,这里用到的方法是利用递归算法 ...
- 【7-10 PAT】树的遍历(给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。)
题干: 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 解题报告: dfs求出这棵树来,然后bfs求层序遍历就行了. AC代码: #include&l ...
最新文章
- python_day10
- oracle odat,通过Oracle执行系统命令
- 软件工程概论冲刺 第6天
- u-boot-1.3.4移植到mini2440+128M nand boot(3)
- VTK:图片之ImageRange3D
- 机器学习之线性回归 (Python SKLearn)
- 如何选择python书籍_如何选择一本优质的数据科学书籍
- beyond compare类似软件_你用过最好用的截图软件是哪一款
- 谷歌力推新语言 Logica,解决 SQL 重大缺陷!
- mysql学习day02
- SpringMVC, Spring和Mybatis整合案例一
- multisim红绿灯元器件在哪里_实验一:Multisim交通灯仿真.ppt
- 工行u盾控件没有在您的机器上检测到u盾,请您检查u盾是否插入计算机,工行u盾电脑检测不到:控件没有在您的机器上检测到u盾...
- python 开发金山打字通辅助脚本
- netcfg_route_netstat_setprop 等命令的使用
- 我,48岁高管,失业2年找不到工作:职场中年,还有上坡路吗?
- Selig集团宣布收购MGJ,成为今年公布的第二笔收购
- shell脚本 追加_Linux添加shell(.sh)脚本并添加定时任务
- decimal在java怎么用?
- Win10安装cuda10.1总是出错!别着急重装,看这篇文章