遍历二叉树—前序遍历,中序遍历,后序遍历,中缀表达式,后缀表达式。

二叉树遍历方法

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
  • 示例3:
          在这里插入图片描述
    遍历顺序为: G -> H -> D -> B -> I -> E -> F -> C -> A

  • 综合题目(中缀表达式,后缀表达式和二叉树关系)

在这里插入图片描述
对这个二叉树做中序遍历就是: (a + b * c ) + ((d * e + f ) * g ),这也就是数学中的中缀表达式(正常的运算方式)
对这个二叉树做后序遍历就是:a b c * + d e * f + g * + ,这就是后缀表达式(计算机运算时的方式)
具体中缀、后缀表达式准换参见文章:中缀、后缀表达式转换

这是我的理解,感觉比单纯的使用递归更好理解些。

这篇文章讲中序遍历不错:

https://blog.csdn.net/qq_33243189/article/details/80222629

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章