您的位置:首页 > 其它

已知二叉树后序遍历序列是DBCEFGHA,中序遍历序列EDCBAHFG,它的前序遍历的序列是?麻烦再画下这二叉树.

2012-06-28 15:44 309 查看
已知二叉树后序遍历序列是DBCEFGHA,中序遍历序列EDCBAHFG,它的前序遍历的序列是?麻烦再画下这二叉树.

后续遍历的顺序是左右根,中序遍历的顺序是左根右

这点应该懂吧

由后续访问序列可以看出最后一个被访问的必定是这个树的根

而中序遍历的序列可以看出,一棵树当根确定后,在根前面被访问的是他的左子树,后边的是他的右子树元素

弄懂了上边两点就开始做题吧

由后序遍历序列是DBCEFGHA

为了方便,我写小写字母了啊

可以看出整棵树的根节点是a

再看中序遍历序列EDCBAHFG

a是根节点

左子树由a左边的元素EDCB构成

右子树由a右边的元素HFG构成

也就是

a

/----/

EDCB--HFG

到这里应该都懂吧

那接下来就着重讲一下左子树的确定

右子树同理可得了

看左子树有4个元素EDCB

后序遍历序列是DBCE

最后访问e

可以确定a下边连接的是e

根据中序遍历序列EDCB

最先访问e

由于中序遍历e前面没有元素

可以确定e左子树为空

即下面的样子

a

//

e

/

dbc

也就是还剩下dbc的顺序没理好

后序遍历序列是dbc

最后访问c

则c为根节点

连接e

中序遍历序列dcb

c前边有d

后边有b

哪么可以确定dcb这棵树为

c

//

d b

哪么整棵树的左子树就确定了



e

/

c

//

d b

同理

右子树应为

h

/

g

/

f

则整棵树就出来了

为下图所示

得出整棵树

前序遍历自然不在话下

为aecdbhgf

------------------------

晕了,想偷下懒都不行呵

同理就是要你自己照着刚才的方法再推右边啊

左边在上边已经说了

那我们来看右边

右边剩下HFG

后序遍历序列是fgh

h最后被访问

可以确定h是右子树的根

也就是与a连着的是h

接下来看中序遍历顺序是HFG

h前面没有元素

说明h的左子树为空

剩下的g和f都是他的右子树的元素

再看后续遍历序列FG

g最后被访问

可以确定g是根节点连接h

然后看中序遍历序列fg

f在前

哪么f应该为g的左子树

整棵树就出来了

再不懂我也不知道怎么解释了



-------------------------

好久没做类似的题

有点生疏了

若果有错

欢迎指出

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐