二叉树是一种常用的树结构,它的每个节点最多只有两个子节点。二叉树的遍历分为:前序遍历、中序遍历、后序遍历以及层序遍历四种方式
-
前序遍历:先访问二叉树的根节点,再访问左子树,最后访问右子树。递归的实现方式如下:
-
中序遍历:先访问二叉树节点的左子树,再访问二叉树节点,最后访问二叉树右子树。递归的实现方式如下:
-
后序遍历:先访问左子树,再访问右子树,最后访问节点。其递归实现如下所示:
-
在每个递归算法中,递归结束条件为判断节点是否为空。当节点为空时,递归结束。
三种遍历算法中,唯一区别就是输出当前节点的时机顺序不同。
-
层序遍历:逐层遍历,输出二叉树中每一层数据。要实现层序遍历,我们不仅要输出当前节点的值,还需要保存节点的左右子树指针,以便输出下一层。
-
在进行层序遍历时,记录当前层节点个数以便循环结束。如果当前节点左右子树不为空,则添加到数组中,以便下一循环中遍历。
注意事项
- 递归遍历注意处理遍历结束条件:节点为空
- 层序遍历时需要保存下一层待遍历节点指针