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