已知二叉树的两种遍历求第三种遍历

以下面这张图为例,如果已知它的前序遍历和中序遍历,求得它的后序遍历。方法如下:

已知前序遍历为(根左右):1、2、4、8、9、5、10、3、6、7(1 2 4 8 9 5 10 3 6 7)

已知中序遍历为(左根右):8、4、9、2、10、5、1、6、3、7(8 4 9 2 10 5 1 6 3 7)

求后序遍历:首先看到前序遍历,可以得到第一个根节点为1,中序遍历中,1前面的都属于1的左节点的(即8、4、9、2、10、5为左节点,6、3、7为右节点),则2一定是1的左节点,1左边的数字在前序遍历中对应到10,则前序遍历中10以后的数字3为1的右节点。接下来的判断和判断1的左右节点的规律如出一致。

以2为根节点前序遍历为:2、4、8、9、5、10,中序遍历为:8、4、9、2、10、5

从前序遍历中判断根节点为2,从中序遍历中可以判断2存在左右节点,其左节点包括8、4、9,右节点包括10、5,接下来从前序便利中可以判断4为8、9的根节点,即2的左节点,5为2的右节点。

以1的右节点3为根节点,前序遍历为:3、6、7,中序遍历为6、3、7,节点的判断方法同上,不再赘述。

最终可以得到一整个二叉树的图,后序遍历自然也就容易得出了。

猜你喜欢

转载自www.cnblogs.com/jincheng81/p/9213932.html
今日推荐