二叉樹的先序 中序 後序遍歷 重點

2022-06-06 02:51:08 字數 1783 閱讀 3279

先訪問根節點

再先序訪問左子樹

再先序訪問右子樹

訪問左子樹步驟:

1.  從根節點a開始

2.  訪問a的左子樹(以b為根節點的樹)

3.  訪問b的左子樹(以d為根節點的樹)

4.  訪問d的左子樹,為空

5.  訪問d的右子樹,為空,d訪問完畢,意味著b的左子樹訪問完了

6.  返回到b,訪問b的右子樹,為空,b訪問完畢,意味著a的左子樹訪問完了

7.  返回到a

即左子樹遍歷為a-b-d

訪問右子樹:

操作與上相同,最後a的右子樹訪問完畢,意味著整棵樹訪問完畢

最終遍歷結果是:a-b-d-c-e-f-g

先遍歷左子樹

再訪問根節點

再中序遍歷右子樹

操作:

1.  從根節點a的左子樹(以b為根節點)開始

2.  訪問b的左子樹,為空

3.  訪問根節點b

4.  訪問b的右子樹(以c為根節點)

5.  訪問c的左子樹(以d為根節點)

6.  訪問d的左子樹,為空

7.  訪問根節點d

8.  訪問d的右子樹,為空,d訪問完畢

9.  返回到c,訪問根節點c

10.  訪問c的右子樹(以e為根節點)

11.  訪問e的左子樹,為空

12.  訪問根節點e

13.  訪問e的右子樹,為空,e訪問完畢

14.  返回到c,c訪問完畢

15.  返回到b,b訪問完畢

16.  返回到a,訪問根節點a

17.  訪問a的右子樹(以f為根節點)……操作同上

最終結果:b-d-c-e-a-l-f-n-q-m

先遍歷左子樹

再遍歷右子樹

再訪問根節點

操作:

1.  先訪問a的左子樹(以b為根節點)

2.  訪問b的左子樹,為空;訪問b的右子樹,為空;訪問根節點b,訪問完畢

3.   返回到a,訪問a的右子樹(以c為根節點)

4.  訪問c的左子樹(以d為根節點)

5.  訪問d的左子樹,為空;訪問d的右子樹,為空;訪問根節點d,訪問完畢

6.  返回到c,訪問c的右子樹(以e為根節點)

7.  訪問e的左子樹(以f為根節點)

8.  訪問f的左子樹(以m為根節點)

9.  訪問m的左子樹,為空;訪問m的右子樹,為空;訪問根節點m,訪問完畢

10.  返回到f;訪問f的右子樹,為空;訪問根節點f,訪問完畢

11.  返回到e;訪問e的右子樹(以l為根節點)

12. 訪問l的左子樹,為空;訪問l的右子樹,為空;訪問根節點l,訪問完畢

13.  返回到e,訪問根節點e,訪問完畢

14.  返回到c,訪問根節點c,訪問完畢

15.  返回到a,訪問根節點a,訪問完畢

最終結果是:b-d-m-f-l-e-c-a

二叉樹先序 中序 後序遍歷

題目 用遞迴和非遞迴方式,分別按照二叉樹先序 中序和後序列印所有的節點。我們約定 先序遍歷順序為根 左 右 中序遍歷順序為左 根 右 後序遍歷順序為左 右 根。遞迴實現 遞迴遍歷二叉樹 先序 public void preorderrecur node head system.out.println...

二叉樹先序遍歷 中序遍歷 後序遍歷

輸入二叉樹的先序遍歷序列和中序遍歷序列,輸出該二叉樹的後序遍歷序列。非建二叉樹版本 include includeusing namespace std string preord,inord void rebuild int preleft,int preright,int inleft,int ...

二叉樹先序遍歷 後序遍歷 中序遍歷

從根部 a 開始,然後開始遍歷左子樹,直接找到 b 檢視 b 有沒有左子樹,有 d,再檢視 d 有沒有子樹,沒有,d 已經是葉子,所以第二個是 d。倒回去,取中 b,第三個數是 b。檢視 b 有沒有右子樹,有 e 檢視 e 有沒有子樹,有 g 左 h 右 所有後面三個數是 egh 先查左子樹,存在繼...