关于二叉树遍历的问题
-------知道其两个遍历序列,求其第三种遍历序列的问题。
题目:某二叉树的先序遍历各节点的顺序是:ABDHEICFJK,中序遍历各节点的顺序是:DHBEIACJFK。 求:该二叉树的后续遍历各节点的顺序?
解答:因为先序的首字母为A,所以此二叉树的树顶节点为A,又因为中序为:DHBEIACJFK。所以DHBEI这5个元素必是A的左子树,CJFK这4个元素必是A的右子树:
再对左子树DHBEI进行判断。因为左子树DHBEI的先序为:BDHEI,中序为:DHBEI。所以此左子树的树顶为B,且DH为B的左子树,EI为B的右子树:
|
因为B的左子树DH的先序为:DH,中序也为:DH。所以:
|
因为B的右子树EI的先序为:EI,中序也为:EI。所以:
|
对于A的右子树CJFK的先序为:CFJK,中序为:CJFK。所以右子树CJFK的树顶为C,且JFK为C的右子树。所以:
|
因为FJK的先序为:FJK,中序为:JFK。所以J为F的左节点,K为F的右节点。所以:
|
所以:
|
所以,综上所得:
|
所以此二叉树的后序是:HDIEBJKFCA。
总结:知道任意两个遍历序列,求第三种遍历序列的思想方法都一样。此方法运用了迭代的思想,逐层深入,化繁为简。特别对于考二级的同学尤为有用,还有另一帖讲述解决此类题的方法(连接地址如下):
http://student.csdn.net/space.php?uid=111110&do=blog&id=10754