这是一棵二叉树
遍历这棵二叉树无非有以下两种方式
层次遍历
普通遍历:从上到下从左到右
在普通遍历方式中,整个遍历二叉树的过程中,每个节点都被经过了 3 次(虽然叶子节点看似只经过了 2 次,但实际上可以看做是 3 次)。以节点 2 为例,它被经过了 3 次。
因此,在编程实现时,我们可以设定真正访问各个节点的时机,换句话说,我们既可以在第一次经过各节点时就执行访问程序,也可以在第二次经过各节点时访问,甚至可以在最后一次经过各节点时访问。
这也就引出了以下 3 种遍历二叉树的算法:
-
先序遍历:每遇到一个节点,先访问,然后再遍历其左右子树(对应①)
-
中序遍历:第一次经过时不访问,等遍历完左子树之后再访问,然后遍历右子树(对应②)
-
后序遍历:第一次和第二次经过时都不访问,等遍历完该节点的左右子树之后,最后访问该节点(对应③)
以图一二叉树为例:
其先序遍历算法访问节点的先后次序为:
1 2 4 5 3 6 7
中序遍历算法访问节点的次序为:
4 2 5 1 6 3 7
后序遍历访问节点的次序为:
4 5 2 6 7 3 1
以上就是二叉树 4 种遍历算法的由来