二叉树的四种遍历方法
一、什么是二叉树?
二叉树的概念
二叉树是n个结点的有限集合,其中n>=0
n>0时,该二叉树称为空二叉树
n=0时,为非空二叉树,非空二叉树由一个根结点和左右两颗子树构成,左右子树又是一棵二叉树
二叉树的特点
每个节点至多由两棵子树;
左右子树不能颠倒,因为二叉树是一颗有序树
二、二叉树的遍历
二叉树的遍历概念
二叉树的遍历就是按照某种次序将二叉树的所有结点访问一遍
二叉树的遍历方法
层序遍历、先序遍历、中序遍历、后序遍历
三、层序遍历
算法思想(记忆口诀:层层访问)
- 初始一个空的辅助队列
- 根结点入队
- 若队列非空(也就是二叉树非空),取出队头结点,遍历该节点的左右子树,若左后子树非空,依次将左右子树的根结点入队
- 重复步骤3,直至队列为空
遍历步骤:
左边为结点已出队序列,右边为辅助队列
A | |
---|---|
A | B C |
A B | C D E |
A B C | D E F |
A B C D | E F G |
A B C D E | F G |
A B C D E F | G |
A B C D E F G |
四、先序遍历
算法思想(记忆口诀:根左右)
- 若二叉树为空,什么也不做,否则:
- 访问根结点
- 先序遍历左子树
- 先序遍历右子树
遍历步骤:
注:(X)代表先序遍历X子树
第一次遍历:A (B) (C)
第二次遍历:A B (D) (E) C (F)
第三次遍历:A B D (G) E C F
第四次遍历:A B D G E C F
五、中序遍历
算法思想(记忆口诀:左根右)
- 若二叉树为空,什么也不做,否则:
- 中序遍历左子树
- 访问根结点
- 中序遍历右子树
遍历步骤:
注:(X)代表中序遍历X子树
第一次遍历:(B) A (C)
第二次遍历:(D) B (E) A (F) C
第三次遍历: D (G) B E A F C
第四次遍历: D G B E A F C
六、后序遍历
算法思想(记忆口诀:左右根)
- 若二叉树为空,什么也不做,否则:
- 后序序遍历左子树
- 后序遍历右子树
- 访问根结点
遍历步骤:
注:(X)代表后序遍历X子树
第一次遍历:(B) (C) A
第二次遍历:(D) (E) B (F) C A
第三次遍历:(G) D E B F C A
第四次遍历: G D E B F C A
七、总结
1. 层序遍历可以记为逐层从左到右遍历,但实际原理较为复杂
2. 先序、中序,后序遍历中的序指的是根结点在何时被访问,左右子树访问次序均是先左后右
3. 在先序、中序、后序遍历中使用的核心思想为分支结点逐层展开法,还有一种思想方法为路径法,又称从你的全世界路过法,敬请下次与大家分享。
不足之处,请多多指教!!!