设有某二叉树,其前序遍历序列是ABCDEFGH,中序遍历序列是CBDAFGEH,试画出该二叉树
A(B(C.D)E(F.G(H)))先看先序,其第一个为树的根,先序遍历是先根再左子树最后右子树,第一个肯定是树的根,先画A,A再中序遍历中左右都有,说明A有左子树也有右子树。扩展资料:按照某种遍历方式对二叉树进行遍历,可以把二叉树中所有结点排列为一个线性序列。在该序列中,除第一个结点外,每个结点有且仅有一个直接前驱结点;除最后一个结点外,每个结点有且仅有一个直接后继结点。但是,二叉树中每个结点在这个序列中的直接前驱结点和直接后继结点是什么,二叉树的存储结构中并没有反映出来,只能在对二叉树遍历的动态过程中得到这些信息。参考资料来源:百度百科-二叉树
已知先序序列:ABCDEFGH,中序序列:CDBAFEHG,画出的二叉树是怎样的?
由先序可知,A是根,于是在中序中可知CDB在作,FEHG在右:
A
/ \
(CDB) (FEHG)
同理,先序划分成A|BCD|EFGH.在左子树BCD中,因先序可得B是根,右子树EFGH中E是根:
A
/ \
B E
| |
(CD) (FGH)
在B和B的子孙中,由中序序列CDB,可知CD都在B的左子树上.先C后D,可得C是B的左子节点,D是C的右子节点.同理由FGH在中序序列为FEHG可以推出,F在E的左子树上,HG在右子树上:
A
/ \
B E
/ / \
C F (GH)
\
D
同CD的判断过程,不难得出G是E右子节点,H是G左子节点:
A
/ \
B E
/ / \
C F G
\ /
D H

