首先看例子,一步一步描述如何画出二叉树。点击我。通过以上后,在做下面题。
- 已知一棵二叉树的先序遍历和中序遍历或者已知一棵二叉树的中序和后序遍历可以画出该二叉树,但是已知一棵二叉树的先序和后序无法确认一棵二叉树。
题目:已知一棵二叉树的先序遍历为1、2、4、7、3、5、6、8,中序遍历序列为4、7、2、1、5、3、8、6,画出该二叉树
分析:
根据先序的从前往后查找确定根节点,根据中序确定根节点的左右子树。
由二叉树的先序序列可知,二叉树的根节点为1,由中序遍历可知根节点把二叉树分成两个部分,4、7、2为根节点1的左子树节点,5、3、8、6为根节点1的右子树节点;
先序第二个节点2将节点1的左子树4、7、2分成两个部分,4、7为节点2的左子树节点,节点2的右子树为空;同样先序第三个节点4将节点2的左子树4、7分成两个部分,节点4的左子树为空,右子树为7,7的左右子树都为空。
同上,3将节点1的右子树5、3、8、6分成两个部分,节点3的左子树为5,右子树由8,6两个节点,节点5的左右子树为空,6将节点3的右子树分成两个部分,节点6左子树为8,右子树为空;拓展:
同样我们也可以根据中序和后序遍历画出二叉树,根据后序确定根节点,根据中序确定根节点的左右子树,不过此时,我们确定根节点需要从后序的后面往前查找根节点。