前序遍歷
具體過程:
- 先訪問根節點
- 再序遍歷左子樹
- 最后序遍歷右子樹
中序遍歷
具體過程:
- 先中序遍歷左子樹
- 再訪問根節點
- 最后中序遍歷右子樹
后序遍歷
遞歸方式實現后序遍歷
- 先后序遍歷左子樹
- 再后序遍歷右子樹
- 最后訪問根節點

二叉樹先序遍歷的實現思想是:
- 訪問根節點;
- 訪問當前節點的左子樹;
- 若當前節點無左子樹,則訪問當前節點的右子樹;

圖 1 二叉樹
以圖 1 為例,采用先序遍歷的思想遍歷該二叉樹的過程為:
- 訪問該二叉樹的根節點,找到 1;
- 訪問節點 1 的左子樹,找到節點 2;
- 訪問節點 2 的左子樹,找到節點 4;
- 由於訪問節點 4 左子樹失敗,且也沒有右子樹,因此以節點 4 為根節點的子樹遍歷完成。但節點 2 還沒有遍歷其右子樹,因此現在開始遍歷,即訪問節點 5;
- 由於節點 5 無左右子樹,因此節點 5 遍歷完成,並且由此以節點 2 為根節點的子樹也遍歷完成。現在回到節點 1 ,並開始遍歷該節點的右子樹,即訪問節點 3;
- 訪問節點 3 左子樹,找到節點 6;
- 由於節點 6 無左右子樹,因此節點 6 遍歷完成,回到節點 3 並遍歷其右子樹,找到節點 7;
- 節點 7 無左右子樹,因此以節點 3 為根節點的子樹遍歷完成,同時回歸節點 1。由於節點 1 的左右子樹全部遍歷完成,因此整個二叉樹遍歷完成;
因此,圖 1 中二叉樹采用先序遍歷得到的序列為:
1 2 4 5 3 6 7
二叉樹中序遍歷的實現思想是:
- 訪問當前節點的左子樹;
- 訪問根節點;
- 訪問當前節點的右子樹;

圖 1 二叉樹
以圖 1 為例,采用中序遍歷的思想遍歷該二叉樹的過程為:
- 訪問該二叉樹的根節點,找到 1;
- 遍歷節點 1 的左子樹,找到節點 2;
- 遍歷節點 2 的左子樹,找到節點 4;
- 由於節點 4 無左孩子,因此找到節點 4,並遍歷節點 4 的右子樹;
- 由於節點 4 無右子樹,因此節點 2 的左子樹遍歷完成,訪問節點 2;
- 遍歷節點 2 的右子樹,找到節點 5;
- 由於節點 5 無左子樹,因此訪問節點 5 ,又因為節點 5 沒有右子樹,因此節點 1 的左子樹遍歷完成,訪問節點 1 ,並遍歷節點 1 的右子樹,找到節點 3;
- 遍歷節點 3 的左子樹,找到節點 6;
- 由於節點 6 無左子樹,因此訪問節點 6,又因為該節點無右子樹,因此節點 3 的左子樹遍歷完成,開始訪問節點 3 ,並遍歷節點 3 的右子樹,找到節點 7;
- 由於節點 7 無左子樹,因此訪問節點 7,又因為該節點無右子樹,因此節點 1 的右子樹遍歷完成,即整棵樹遍歷完成;
因此,圖 1 中二叉樹采用中序遍歷得到的序列為:
4 2 5 1 6 3 7
二叉樹后序遍歷的實現思想是:從根節點出發,依次遍歷各節點的左右子樹,直到當前節點左右子樹遍歷完成后,才訪問該節點元素。

圖 1 二叉樹
如圖 1 中,對此二叉樹進行后序遍歷的操作過程為:
- 從根節點 1 開始,遍歷該節點的左子樹(以節點 2 為根節點);
- 遍歷節點 2 的左子樹(以節點 4 為根節點);
- 由於節點 4 既沒有左子樹,也沒有右子樹,此時訪問該節點中的元素 4,並回退到節點 2 ,遍歷節點 2 的右子樹(以 5 為根節點);
- 由於節點 5 無左右子樹,因此可以訪問節點 5 ,並且此時節點 2 的左右子樹也遍歷完成,因此也可以訪問節點 2;
- 此時回退到節點 1 ,開始遍歷節點 1 的右子樹(以節點 3 為根節點);
- 遍歷節點 3 的左子樹(以節點 6 為根節點);
- 由於節點 6 無左右子樹,因此訪問節點 6,並回退到節點 3,開始遍歷節點 3 的右子樹(以節點 7 為根節點);
- 由於節點 7 無左右子樹,因此訪問節點 7,並且節點 3 的左右子樹也遍歷完成,可以訪問節點 3;節點 1 的左右子樹也遍歷完成,可以訪問節點 1;
- 到此,整棵樹的遍歷結束。
由此,對圖 1 中二叉樹進行后序遍歷的結果為:
4 5 2 6 7 3 1
滿二叉樹:二叉樹中每個內部結點都有存在左子樹和右子樹(或者說滿二叉樹所有的葉結點都有同樣的深度)
滿二叉樹一定是完全二叉樹,但完全二叉樹不一定是滿二叉樹


結點的度和層次
對於一個結點,擁有的子樹數(結點有多少分支)稱為結點的度(Degree)。例如,圖 1(A)中,根結點 A 下分出了 3 個子樹,所以,結點 A 的度為 3。
結點的層次:從一棵樹的樹根開始,樹根所在層為第一層,根的孩子結點所在的層為第二層,依次類推。對於圖 1(A)來說,A 結點在第一層,B、C、D 為第二層,E、F、G、H、I、J 在第三層,K、L、M 在第四層。

樹的表示方法
除了圖 1(A)表示樹的方法外,還有其他表示方法:

(A) (B)
圖 2(A)是以嵌套的集合的形式表示的(集合之間絕不能相交,即圖中任意兩個圈不能相交)。
圖 2(B)使用的是凹入表示法(了解即可),表示方式是:最長條為根結點,相同長度的表示在同一層次。例如 B、C、D 長度相同,都為 A 的子結點,E 和 F 長度相同,為 B 的子結點,K 和 L 長度相同,為 E 的子結點,依此類推。
最常用的表示方法是使用廣義表的方式。圖 1(A)用廣義表表示為:
二叉樹的性質
- 二叉樹中,第 i 層最多有 2i-1 個結點。
- 如果二叉樹的深度為 K,那么此二叉樹最多有 2K-1 個結點。
- 二叉樹中,終端結點數(葉子結點數)為 n0,度為 2 的結點數為 n2,則 n0=n2+1