关于二叉树遍历的快捷思考方法

来源:互联网 发布:淘宝卖鞋子的好店 编辑:程序博客网 时间:2024/06/02 11:06

二叉树遍历有前中后三种方法

前序 : 根>左>右

中序 : 左>根>右

后序 : 左>右>根


有两个题目

类似的方法可以通用


已知一棵二叉树,如果前序遍历的节点顺序是:ADCEFGHB,中序遍历是:CDFEGHAB,则后序遍历结果为 ?

arr1 = [ADCEFGHB]

arr2 = [CDFEGHAB]

step1.

根据前序遍历特点确定根节点,即A;

用类似String.split("A")方法一样分割。

分割arr2=[CDFEGH],[A],[B]。同时把arr1分割,arr1=[A],[DCEFGHB]

由于B被分割出去了,所以arr1可以继续分割为 arr1=[A],[DCEFGH],[B]

这种情况,根节点为A,A的右边只有一个B且B下无子节点

step2.

观察arr1=[DCEFGH] arr2=[CDFEGH] 

继续分割 按照step1 得出D是根节点,同时D是A的左叶子节点,C是D的左叶子,C下无叶子节点

然后接着按如上分析,最后GH的分析根据前中序的遍历顺序确定左右

最终结果如图


后序遍历为  左>右>根

有了图,很快顺序就出来了 CFHGEDBA


第二题


后序结果为?


于是按照这样的思路,所不同的是左右都差不多,但是分析方法是一样的,分割处理


可画出二叉树


后序为 3241756


感觉这种方式做笔试题比较好用


感觉还有一种根据染色和长度来确定的顺序,但是暂时没有去研究,先不写了

 


原创粉丝点击