前中后序遍历
记住一点:前指的是中间的父节点在遍历中的顺序,只要大家记住 前中后序指的就是中间节点的位置就可以了。
看如下中间节点的顺序,就可以发现,访问中间节点的顺序就是所谓的遍历方式
前序遍历:中左右
中序遍历:左中右
后序遍历:左右中
通过中序和后序序列恢复二叉树
通过中序和后序也能恢复原始序列的,唯一的不同是后序序列的最后一个是根节点,中序的处理也是上面一样的过程:
前序:1 2 3 4 5 6 8 7 9 10 11 12 13 15 14
中序:3 4 8 6 7 5 2 1 10 9 11 15 13 14 12
后序:8 7 6 5 4 3 2 10 15 14 13 12 11 9 1
第一轮
通过后序遍历可以知道最后的1
为根节点,通过中序遍历得到1
左边的是左儿子节点[3 4 8 6 7 5 2]
右边为右儿子节点[10 9 11 15 13 14 12]
第二轮
通过后序遍历可以知道倒数第二的9
为根节点的右儿子,通过中序遍历得到9
左边的是左儿子节点[10]
右边为右儿子节点[11 15 13 14 12]
第三轮
通过后序遍历可以知道11
为9
的右儿子,通过中序遍历得到9
左边的是左儿子节点[null]
右边为右儿子节点[15 13 14 12]
第四轮
通过后序遍历可以知道13
为12
的右儿子,通过中序遍历得到13
左边的是左儿子节点[15]
右边为右儿子节点[14]
第五轮
通过后序遍历可以知道13
为12
的右儿子,通过中序遍历得到13
左边的是左儿子节点[15]
右边为右儿子节点[14]
第六轮
接下来到左子树了。
根据后序遍历2
为根节点1
的左子树,根据中序遍历2
的左子树为[3 4 8 6 7 5]
,右子树为[null]
。
第七轮
根据后序遍历3
为根节点2
的左子树,根据中序遍历3
的左子树为[null]
,右子树为[4 8 6 7 5]
。
接下来都一样,直接发结果