前序序列:根左右;
中序序列:左根右;
后序序列:左右根。
从以下例子可以非常清楚地明白
图源参考
对于前序和中序的情况
前序序列:根左右
中序序列:左根右
1. 先找出前序的第一个节点(根节点),然后从中序,根据根节点分为左边树与右边树,然后再根据前序中紧邻根节点的元素,确定好根节点紧邻的第一个元素;
2. 然后就是套娃的过程:将紧邻根节点的元素作为“根节点”
,从中序,根据“根节点”
分出其左边树与右边树,再根据前序中紧邻“根节点”
的元素继续找出下一个,直到结束。。。
对于中序和后序的情况
中序序列:左根右
后序序列:左右根
例子如下:
一棵二叉树的后序遍历序列为DGJHEBIFCA ,中序遍历序列为DBGEHJACIF,还原二叉树。
与前中序同样的道理,只是根节点在后序中的最后。
根据后序结果,根节点为A,从中序将节点分为左边树与右边树,然后找紧邻A的元素,即C为CIF一边的根节点
;
然后又开始套娃,除去AC后,说明F也是IF的根节点
,这样,一边的就结束了,然后继续套娃。。。
需要注意的是,别忘了左右树的方向区别
结果如下: