最近参加的实习生面试经常遇到恢复二叉树的问题,把我的方法总结记录下来。
由二叉树的遍历知道,任何一个二叉树他的前序,中序,后序遍历都是唯一的,反过来,若已知节点的前序和中序,同样也可以确定这颗二叉树。
举个例子,已知一颗二叉树前序和中序遍历分别为:
A,,B,C,D,E,F,G,H,I
B,C,A,E,D,G,H,F,I
分析如下:
由前序遍历知,A为数的根节点,其次。根据中序遍历,A之前的点都是根节点的左子树节点,之后都是右子树节点,如图1,然后在对左子树进行分解,由前序知道,B是左子树的根节点,又从中序知道,B的左子树为空,右子树为C,同理对A的右子树分解,右子树根节点为D,中序中D左边为E,右边为GHFI,如图2,再同理对D的右子树分解。