本文转载自:数据结构笔记——由遍历序列构造二叉树
一、二叉树的遍历序列的非唯一性
中序遍历
中序遍历左子树、根结点、中序遍历右子树
前序遍历
根结点、前序遍历左子树、前序遍历右子树
后序遍历
前序遍历左子树、前序遍历右子树、根结点
层序遍历
层序遍历只能用于完全二叉树
即利用二叉树性质,按照层序进行编号。
有下列特性:
- 1为根节点(不能为0)
- i的左节点为 $2i$,右节点为 $2i+1$
结论:若只给出一棵二叉树的前、中、后、层序遍历序列中的一种,不能唯一确定一棵二叉树
前序序列和后序序列却不一定能唯一地确定一棵二叉树 ——因为无法确定区分左右子树部分
二、由多个遍历序列构造唯一二叉树
1.前序+中序遍历序列
前序遍历序列:根结点 左子树的前序遍历序列 右子树的前序遍历序列
中序遍历序列:左子树的中序遍历序列 根结点 右子树的中序遍历序列
例1:
例2:
2.后序+中序遍历序列
后序遍历序列:左子树的中序遍历序列 右子树的中序遍历序列 根结点
中序遍历序列:左子树的中序遍历序列 根结点 右子树的中序遍历序列
例:
3.层序+中序遍历序列
层序遍历序列:根结点 左子树的根 右子树的根
中序遍历序列:左子树的中序遍历序列 根结点 右子树的中序遍历序列
例1:
例2:
4.若前序、后序、层序序列两两组合?
关键点在于无法找到根节点,无法由此划分出左右子树