二叉树遍历方法
1、前序遍历
说明:若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。
简单来讲,一句话:根结点排最先,同级先左后右。
- 示例1:
解释:根结点是1,左孩子是2,右孩子是3,那么先根,同级先左后右就是 1-> 2-> 3.
- 示例2:
解释:根结点是1,左右孩子分别是2,3;第二层根结点是2和3: 2的左右孩子分别是4,5;3的左右孩子分别是6和7;第三层是叶子结点,没有孩子。
① 将245看作A,367看作B,那么这个树就变形成为下图:
这个树的遍历结果为:1 -> A ->B
② A为:
遍历顺序为:2 -> 4 -> 5
③ B为:
遍历顺序为: 3 -> 6 -> 7
综上所述:那么前序遍历时,1-> 2-> 4 -> 5 -> 3 -> 6 -> 7
- 示例3:
前序遍历结果:A-> B -> D -> G -> H -> C -> E -> I -> F
2、中序遍历
规则:若树为空,则空操作返回,否则从根结点开始(注意不是先访问根结点),中序遍历根结点的左子树,然后是访问根结点,最后中序遍历右子树。
简单来讲,一句话:先左后根最后右
- 示例1:
解释:根结点是1,左孩子是2,右孩子是3,那么先左,后根最后右就是 2-> 1-> 3. - 示例2:
解释:根结点是1,左右孩子分别是2,3;第二层根结点是2和3: 2的左右孩子分别是4,5;3的左右孩子分别是6和7;第三层是叶子结点 ,没有孩子。
① 将245看作A,367看作B,那么这个树就变形成为下图:
这个树的遍历结果为:A -> 1 -> B
② A为:
遍历顺序为:4 -> 2 -> 5
③ B为:
遍历顺序为:6 -> 3-> 7
综上所述,中序遍历为: 4 -> 2 -> 5 -> 1 -> 6 -> 3 -> 7
-
示例3:
遍历顺序为: G -> D -> H -> B -> A -> E -> I -> C -> F
3、后序遍历
说明: 规则是若树为空,则空操作返回,否则从左到右先叶子后结点的方式遍历访问左右子树,最后是访问根结点。
简单来讲,一句话: 先左后右最后根
- 示例1:
解释:根结点是1,左孩子是2,右孩子是3,那么先左后右最后根就是 2 -> 3-> 1. - 示例2:
解释:根结点是1,左右孩子分别是2,3;第二层根结点是2和3: 2的左右孩子分别是4,5;3的左右孩子分别是6和7;第三层是叶子结点,没有孩子。
① 将245看作A,367看作B,那么这个树就变形成为下图:
这个树的遍历结果为:A -> B -> 1
② A为:
遍历顺序为:4 -> 5 -> 2
③ B为:
遍历顺序为: 6 -> 7 -> 3
综上所述,后序遍历为: 4 -> 5 -> 2 -> 6 -> 7 -> 3 -> 1
对这个二叉树做中序遍历就是: (a + b * c ) + ((d * e + f ) * g ),这也就是数学中的中缀表达式(正常的运算方式)
对这个二叉树做后序遍历就是:a b c * + d e * f + g * + ,这就是后缀表达式(计算机运算时的方式)
具体中缀、后缀表达式准换参见文章:中缀、后缀表达式转换