已知二叉树的中序序列和后序序列,怎么求前序序列

作者&投稿:成疮 (若有异议请与网页底部的电邮联系)
~ 1、确定树的根。树根是当前树中所有元素在后序遍历中最后出现的元素。
2、求解树的子树。找出根节点在中序遍历中的位置,根左边的所有元素就是左子树,根右边的所有元素就是右子树。若根节点左边或右边为空,则该方向子树为空;若根节点左边和右边都为空,则根节点已经为叶子节点。
3、递归求解树。将左子树和右子树分别看成一棵二叉树,重复1、2、3步,直到所有的节点完成定位。
举例说明:根据已知求解二叉树
中序序列 HLDBEKAFCG
后序序列 LHDKEBFGCA
1、在后序序列LHDKEBFGCA中最后出现的元素为A,HLDBEK|A|FCG
2、在后序序列LHDKEB中最后出现的元素为B,HLD|B|EK|A|FCG
3、在后序序列LHD中最后出现的元素为D,HL|D|B|EK|A|FCG
4、在后序序列LH中最后出现的元素为H,H|L|D|B|EK|A|FCG
5、在后序序列KE中最后出现的元素为E,H|L|D|B|E|K|A|FCG
5、在后序序列FGC中最后出现的元素为C,H|L|D|B|E|K|A|F|C|G
6、所有元素都已经定位,二叉树求解完成,如下
A
/ \
B C
/ \ / \
D E F G
/ \
H K
\
L

已知一棵二叉树的中序序列和后序序列分别为BDCEAFHG和DECBHGFA,请画出...
答:var zhong,hou,pre:string;procedure solve(mid,post:string);var i:longint;begin if (mid='')or(post='') then exit;i:=pos(post[length(post)],mid);pre:=pre+post[length(post)];solve(copy(mid,1,i-1),copy(post,1,i-1));solve(copy(mid,i+1,length(mid)-i),copy(post...

已知二叉树的前序序列为ABCDEFG,中序序列为DBCAFEG,则后序序列为...
答:【答案】:B 本题考查的是二叉树的遍历过程。在本题中,由于前序遍历首先访问的是根结点,所以根结点是A,又由于后序遍历最后访问的是根结点,所以排除选项A;根据中序序列知道,DBC是左子树的结点,FEG是右子树的结点。

数据结构程序编写1.编写已知二叉树的后序、中序序列,恢复此二叉树的程序...
答:你是要我帮你写程序么,我自己作业很多,很忙。而且程序还是自己写的好,这样印象才深。下面说说我的理解。比方说有这么个二叉树,如图:对于这样一颗树,后序遍历和中序遍历得到的结点序列分别为:后序:D E C B I G H F A ………(式1)中序:D C E B A G I F H ………(...

知道二叉树先序,中序,后序其中的两个顺序列,如何画出二叉树
答:(1)由先序遍历序列和后序遍历序列不能唯一确定一棵二叉树。(2)由先序遍历序列和中序遍历序列能够唯一确定一棵二叉树。设先序序列为:a1,a2,……,an , 中序序列为:ap1,…,api, a1, …,apn 。则a1为根结点;ap1,…,api为左子树的中序序列,a2,…,ai-1为左子树的先序序...

...已知二叉树遍历的中序序列和后序序列 输出先序序列 求代码_百度...
答:} //前序结果数组 中序结果数组 数组长度 //根据中后序生成二树 BiTree *Resume_BiTree(Elem_Type *post, Elem_Type *center, int len){ if (len <= 0)return NULL;BiTree *temp = new BiTree;temp->data = post[len - 1];//后序最后一个元素即为根元素 int index = S...

【紧急求助】某二叉树的前序序列为ABCD,中序序列为DCBA,则后序序列为...
答:详解为:前序序列的顺序是根、左、右,序列ABCD第一个一定是根结点,A是根节点。中序序列顺序是左、根、右,因为A是根节点,所以DCB位于A左侧,A右侧没有结点,B是DCB三个结点中的根。前序序列是中左右,根结点为A;中序序列是左中右,左子树BCD;遵循遍历序列的规则排列出二叉树,得出后序遍历...

C++: 题目如下:已知一棵二叉树的先序,中序和后序序列如下,其中各有一部...
答:C++:题目如下:已知一棵二叉树的先序,中序和后序序列如下,其中各有一部分未给出其值,请构造出该二叉树。先序:A_CDEF_H_J中序:C_EDA_GFI_后序:C__BHGJI__... C++:题目如下:已知一棵二叉树的先序,中序和后序序列如下,其中各有一部分未给出其值,请构造出该二叉树。 先序:A_C D E F_H_J 中...

为什么由二叉树的中序遍历序列和后序遍历序列可唯一地确定出该...
答:因为从后序序列中可以知道根结点,但是不知道后序序列中哪部分是左子树的,哪部分是右子树的,然后在中序则是在已知根结点的前提下,可以将左子树或者右子树与根分割开

已知一颗二叉树的中序序列和后序序列分别如下,请画出该二叉树图
答:Elem_Type *array,int len){ for(int i=0; i<len; i++) if(array[i] == num) return i; //return -1;//没有找到} //中序遍历 后序遍历 中序长度BiTree *Resume_BiTree(Elem_Type *center,Elem_Type *back,int len){ if(len <= 0) return NULL;...

已知二叉树的中序遍历结果: BDCEAFHG。后序遍历结果:DECBHGFA,画出此二 ...
答:1、先求原始二叉树,后序遍历中最后出现的是根,所以A是整棵树的根,在结合中序遍历来看 BDCE是A的左子树,而FHG是A的右子树;2、BDCE序列中B是整个序列根,因为后序遍历中B最后出现。此时再看中序中根B左端没有左子 树,右端有DCE,所以DCE是B的右子树 ;3、再看D、C、E在后序遍历中C...