文章目录
一、二叉树的遍历
遍历:按照某种次序把所有结点都访问一遍。
层次遍历:基于树的层次特性确定的次序规则。
先/中/后序遍历:基于树的递归特性确定的次序规则。(其中 ‘序’ 指的是根节点的位置)
二叉树的递归特性: ①要么是个空二叉树 ②要么就是由“根节点+左子树+右子树”组成的二叉树。
1. 先序遍历
先序遍历(PreOrder)的操作过程如下:
- 若二叉树为空,则什么也不做;
- 若二叉树非空: ①访问根结点; ②先序遍历左子树; ③先序遍历右子树。
2. 中序遍历
中序遍历(InOrder)的操作过程如下:
- 若二叉树为空,则什么也不做;
- 若二叉树非空: ①先序遍历左子树; ②访问根结点; ③先序遍历右子树。
3. 后序遍历
后序遍历(InOrder)的操作过程如下:
- 若二叉树为空,则什么也不做;
- 若二叉树非空: ①先序遍历左子树; ②先序遍历右子树; ③访问根结点。
三种遍历算法的时间复杂度、空间复杂度都是O(n)。
4. 遍历算数表达式树
5. 层次遍历
6. 由遍历序列构造二叉树
若只给出一棵二叉树的 前/中/后/层 序遍历序列中的一种,不能唯一确定一棵二叉树。
前序+中序遍历序列 / 后序+中序遍历序列 / 层序+中序遍历序列 这三种组合能唯一确定一棵二叉树。
前序+中序遍历序列