遍歷二叉樹—前序遍歷,中序遍歷,後序遍歷,中綴表達式,後綴表達式。

二叉樹遍歷方法

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

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