-
2020-08-01 09:43:12
答:
能确定,树的先根遍历和后根遍历对应二叉树的先序遍历和中序遍历。由二叉树的先序遍历和中序遍历可唯一确定一颗二叉树,二叉树可唯一变换为树
更多相关内容 -
经典的二叉树的先根、中根和后根遍历序列题
2022-04-06 17:16:37 -
java中根遍历序列和后根遍历序列,建立二叉树
2019-06-24 16:07:32// 由中根遍历的数组和后根遍历的数组建立一棵二叉树 // 其中参数inOrder是整棵树的中根遍历,postOrder是整棵树的后根遍历,inIndex是 // 中根遍历从inOrder字符串中的开始位置,postIndex是后根遍历从字符串...1.递归建立二叉树
由中根遍历的数组和后根遍历的数组建立一棵二叉树,其中参数inOrder是整棵树的中根遍历,postOrder是整棵树的后根遍历,inIndex是 中根遍历从inOrder字符串中的inOrder的最后一个位置,postIndex是后根遍历从字符串postOrder 中的最后一个位置,count表示树结点的个数。
public BiTree( String postOrder, String inOrder, int postIndex,int inIndex,int count) { if (count > 0) {// 中根和后根非空 char r = postOrder.charAt(postIndex);// 取后根字符串中的最后一个元素作为根结点 int i =0 ; for (; i<count; i++) { // 寻找根结点在中根遍历字符串中的索引 if (r == inOrder.charAt( inIndex-i)) { break; } } root = new BiTreeNode(r);// 建立树的根结点 root.rchild= new BiTree( postOrder,inOrder,postIndex-1,inIndex, i).root;// 建立树的右子树 root.lchild= new BiTree( postOrder, inOrder,postIndex-i-1,inIndex -i-1,count-i-1).root;// 建立树的左子树 } }
2.实现类
public class test { public static void main(String[] args) { String postOrder = "DGEBHFCA"; String inOrder = "DBGEAFHC"; BiTree T = new BiTree(postOrder,inOrder,postOrder.length()-1,postOrder.length()-1,postOrder.length()); System.out.println("先根遍历为:"); BiTreeNode root = T.getRoot(); //取得树的根结点 T.preRootTraverse(root); System.out.println(); System.out.println("后根遍历"); T.postRootTraverse(root); System.out.println(); System.out.println("中根遍历"); T.inRootTraverse(root); } }
3.运行结果:
先根遍历为:
ABDEGCFH
后根遍历
DGEBHFCA
中根遍历
DBGEAFHC -
已知一棵树二叉树的后根遍历和中根遍历的序列写出它的先根序列或者已知一棵树二叉树的先根遍历和中根遍历的...
2022-04-09 14:26:43数据结构中最爱考的题型已知后根、中根求先根或已知先根、中根求后根题一:
已知一棵树二叉树的 后根遍历 和 中根遍历 的序列分别为: ACDBGIHFE 和 ABCDEFGHI,
请画出该二叉树,并写出它的先根遍历的序列
答:
先根遍历序列:EBADCFHGI
解题思路:
我们先找到根
后根:左 右 根 中跟:左 根 右
ACDB GIHF E ABCD E FGHI
我们先从后根去找,这个根一定是在这个遍历的后面,我们就可以确定E是根
然后我们在中根遍历中找到E的位置,所以E的左边就是左指数节点,右边是右指数节点
现在最上面的数E确定了,那谁是E左指数上的根呢,谁在后面谁是根:是B
然后再看中根遍历,谁在B的左边谁是左指数:是A;于是:
现在在左指数上只有C和D没有画出来,
看中根遍历得到:C和D在B的右边,看后根遍历知道D在后面,所以D是根,
在中根遍历中,C在D的左边,所以C是D的左指数;
于是:以E为根节点的左指数画完
接下来看看以E为根节点的右指数,先在后根遍历中找根节点,谁在后面谁是根节点:是F
再到中根遍历中找到F位置,F左边画完了,所以没有左指数,再看右边:GHI
回到后根遍历看GHI,得知H是根节点,所以:
现在只剩G、I 没有画了,所以回到中根遍历中看到G在H左,I 在H右,所以:
如果想知道画的对不对,带进题干,看看他的后根遍历和中根遍历对不对就行了
题二:
已知一棵树二叉树的先根遍历和中根遍历的序列分别为:ABDGHCEFI和GDHBAECIF,
请画出此二叉树,并写出它的后根遍的序列
构造的二叉树如下
后根遍历序列: GHDBEIFCA
解题思路:
首先先找根先根: 根 左 右 中根: 左 根 右
A BDGH CEFI GDHB A ECIF
看先根遍历得知A是根,然后在中根遍历中找到A的位置
所以得知GDHB在A的左边,ECIF在A的右边
那GDHB是谁根呢?回到先根遍历中,谁在前面谁是根,得知是B
再看中根,GDH在B的左边,那就是B的左指数
那GDH种谁是根呢?看先根中,D在前,那D就是根
再去中根遍历中找D的位置,得知左是G,右是H
现在以A为根节点的左指数已全部找到,那右指数就是ECIF
回到先根遍历中,那这四个谁在前面谁是根,是C
再去中根遍历中找C的位置,E在C的左边(左指数),I F在C的右边(右指数)
那 I F谁是根呢?去先根遍历中找:F在前,F是根
中根遍历中 I 在 F 左,于是 I 是F的左指数
-
某二叉树的先根遍历序列和后根遍历序列正好相反,则该二叉树一定是
2019-10-28 16:05:15那可以推断出,要满足题意的话“二叉树的先序序列与后序序列正好相反”,说明整个二叉树左子树或者右子树有一个没有(遍历就成了,先:M-L ;后:L-M 或者 先:M-R ;后:R-M )也就是必然是一条链。 所以只有A对了... -
某二叉树的先根遍历序列和后根遍历序列正好相反,则该二叉树具有的特征是()----腾讯2016研发工程师在线模拟...
2016-07-10 20:03:09某二叉树的先根遍历序列和后根遍历序列正好相反,则该二叉树具有的特征是() 正确答案: A 高度等于其结点数 任一结点无左孩子 任一结点无右孩子 空或只有一个结点 添加笔记 ... -
四种根据给定遍历序列构造二叉树总结(JAVA递归和非递归版)
2020-12-21 23:36:43构造二叉树根据前序与中序遍历序列构造二叉树根据先序遍历构造二叉搜索树根据中序与后序遍历序列构造二叉树根据前序与后序遍历序列构造二叉树 二叉树的遍历顺序及方法可参考之前写过的二叉树的遍历(JAVA递归和非... -
已知某二叉树的中根遍历序列是ABCDEFG,后根遍历序列是BDCAFGE,则它的先跟遍历序列是:EACBDGF
2019-01-18 15:17:46已知某二叉树的中根遍历序列是ABCDEFG,后根遍历序列是BDCAFGE,则它的先跟遍历序列是:EACBDGF 首先明确先跟遍历:中左右;中根遍历:左中右;后根遍历:左右中 1.后根遍历明确根节点是E,中根遍历确定左子树是ABCD... -
已知一个二叉树的中序遍历序列和后序遍历序列,求这棵树的前序遍历序列
2022-04-06 20:23:50已知一个二叉树的中序遍历序列和后序遍历序列,求这棵树的前序遍历序列。 【输入形式】 一个树的中序遍历序列 该树后序遍历序列,中间用空格分开。输入序列中仅含有小写字母,且没有重复的字母 【输出形式】 一个树... -
【数据结构】由先根遍历序列和中根遍历序列建立一棵二叉树的算法
2019-10-11 11:55:29//访问根节点 } } //建立二叉树 //由先根遍历序列和中根遍历序列建立一棵二叉树 public BiTree(String preOrder,String inOrder,int preIndex,int inIndex,int count) { if(count>0) { char r=preOrder.... -
树的后根遍历图解_图解 6 种树,你心中有数吗。。。
2020-11-21 14:15:09先访问根节点后访问左右子树的遍历方式是前序遍历,先访问左右子树最后访问根节点的遍历方式是后序遍历,先访问左子树再访问根节点最后访问右子树的遍历方式是中序遍历,下面详细说明: 前序遍历 遍历顺序是根节点-... -
二叉树的先根,中根,后根遍历
2021-11-16 17:10:01} 后根遍历:先遍历左子树,然后再遍历右子树,最后再遍历根; 即输出:1->3->2->7->6->4->9->11->10->13->15->14->12->8 public void afterRoot() { if (left != null) left.afterRoot(); if (right != null) right.... -
以中根和后根遍历序列构造二叉树,替换所有与pattern匹配的子树为bitree。(栈)
2020-09-26 20:57:05以中根和后根遍历序列构造二叉树,替换所有与pattern匹配的子树为bitree。 public class BinaryTree { public BinaryNoderoot; public BinaryTree() { this.root = null; } public boolean isEmpty() //判断是否... -
已知二叉树的先序遍历序列和中序遍历序列,求后序遍历序列。
2016-10-25 08:56:00思路: 先序序列的第一个结点为要构造二叉树的根结点,在中序序列中查找二叉树的根结点,则中序列根结点左边为根结点的左子树的中序序列,...然后在构造了根结点后,就可以递归调用函数来勾结根结点的左子树和... -
先根,中根,后根遍历
2018-06-08 16:17:00先序遍历(先根)是先访问当前节点,然后再...一棵二叉树的先根遍历为ABCDEFG,中根遍历为CBDEAGF,则其后根遍历为多少? 方法:(层层解剖,集合从大到小,递归分析) (无论如何必须先分析先根,确定父节点,再... -
【LeetCode】【树】106. 从中序与后序遍历序列构造二叉树
2020-12-20 20:21:53从中序与后序遍历序列构造二叉树 1 题目地址 https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/ 2 题目描述 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你... -
由标明空子树的先序遍历序列创建二叉树
2020-11-04 11:17:55由标明空子树的先序遍历序列创建二叉树 i=0 def createBiTree2(preOrder): # i为常数0 global i c = preOrder[i] # 取字符 if c != '#': root = BiTreeNode(c) i += 1 root.lchild = createBiTree2... -
二叉树先根、中根、后根遍历
2017-10-14 17:39:19二叉树先根、中根、后根遍历 先根遍历: ABCDEFGH 中根遍历:CBEDFAGH 后根遍历 : CEFDBHGA -
通过先序遍历和中序遍历后的序列还原二叉树(实现方法)
2020-08-30 08:29:46下面小编就为大家带来一篇通过先序遍历和中序遍历后的序列还原二叉树(实现方法)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
二叉树面试题--已知二叉树的两种遍历序列,求出另一种遍历序列
2018-04-03 12:00:37转载地址:http://blog.csdn.net/peiyao456/article/details/52667057已知先序遍历序列和中序遍历序列,求出后序序列 或者 已知中序序列和后序序列 ,求出先序遍历。。都是一些考试中容易考的题目。经过研究发现,... -
还原二叉树遍历序列
2018-08-14 22:07:14已知一颗二叉树后序序列为 debfca, 中序序列为dbeafc, 则先序遍历为:abdecf a / \ b c / \ / d e f -----------------------------------------------------------------... -
输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列
2019-12-29 10:51:46输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。 输入 输入文件为tree.in,共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。树的结点一律用小写字母表示。 输出 输出... -
已知二叉树的先序遍历序列和中序遍历序列,建二叉树过程(递归)
2021-02-08 20:25:40已知二叉树的先序遍历序列和中序遍历序列,建二叉树过程(递归) 中心思想: 利用先序序列知道每个部分根结点、左子树和右子树,再利用中序序列进行递归 如:先序序列abxxcxx 中序序列bxxacxx 根结点a 左子树bxx 右... -
中根遍历和先根遍历/后根遍历构建二叉树
2017-04-12 22:34:34给定二叉树的2个遍历序列(如先根+中根,先根+后根,中根+后根等),是否能够根据这2个遍历序列唯一确定二叉树? 2结论 这三种组合并不是都能唯一确定二叉树的,其中先根+后根就不能唯一确定一棵二叉树,中根+先根... -
已知前序(后序)遍历序列和中序遍历序列构建二叉树(Leetcode相关题目)
2021-01-15 05:40:45以前序为例子:前序遍历序列:ABCDEF中序遍历序列:CBDAEF前序遍历先访问根节点,因此前序遍历序列的第一个字母肯定就是根节点,即A是根节点;然后,由于中序遍历先访问左子树,再访问根节点,最后访问右子树,所以... -
二叉树的先序、中序、后序遍历序列
2021-01-02 15:35:51二叉树的遍历主要有三种: (1)先序遍历(根左右) (2)中序遍历(左根右) (3)后序遍历(左右根) 举个例子: 先序遍历(根左右):A B D H ...例子1:已知二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的 -
京东2017实习生招聘试题 某二叉树的前序遍历序列和后序遍历序列正好相反,则该二叉树具有的特征是
2017-04-12 13:21:06某二叉树的前序遍历序列和后序遍历序列正好相反,则该二叉树具有的特征是 A 高度等于其结点数 B 任一结点无左孩子 C 任一结点无右孩子 D 空或只有一个结点个人参考答案: A 选项可能未全匹配,凭回忆码的知识点... -
【数据结构】以孩子兄弟链表作存储结构,创建一...并输出其先根、后根遍历序列;统计树中叶子结点的个数和深度
2017-11-02 17:29:03#include #define MAXSIZE 100 using namespace std;... cout树的后根遍历输出为:\n"; InOrderTraverse2(s); CountLeaf(s); a=Depth(s); cout树的深度为:"; cout树的叶子结点个数为:"; } -
关于任意两种遍历序列相同所确定的二叉树
2019-11-09 10:58:21二叉树的先序遍历:根——左子树——右子树 二叉树的中序遍历:左子树——根——右子树 二叉树的后序遍历:左子树——右子树——根 二叉树的层次遍历:从第一层开始,从上至下逐层遍历,在同一层中,则按照从左到右...