二叉樹的定義
二叉樹T:一個有窮的結點集合。
這個集合可以為空
若不為空,則它是由根結點和稱為其左子樹TL和右子樹TR的
兩個不相交的二叉樹組成。
二叉樹的子樹有左右順序之分
特殊二叉樹
- 斜二叉樹(樹的分支只有一個方向 類似于數組和單向鏈表)
- 完美二叉樹或滿二叉樹(結點和層數滿足 結點=2^(層數)- 1)
- 完全二叉樹(有n個結點的二叉樹,對樹中結點按 從上至下、從左到右順序進行編號, 編號為i(1 ≤ i ≤ n)結點與滿二叉樹 中編號為 i 結點在二叉樹中位置相同)
二叉樹幾個重要性質
- 一個二叉樹第 i 層的最大結點數為:2 i-1,i >= 1。
- 深度為k的二叉樹有最大結點總數為: 2 k-1,k >= 1。
- 任何非空二叉樹 T,若n0表示葉結點的個數、n2是 度為2的非葉結點個數,那么兩者滿足關系n0 = n2 +1。(邊相等理論證明)
二叉樹的存儲結構
- 順序存儲結構
完全二叉樹:按從上至下、從左到右順序存儲
n個結點的完全二叉樹的結點父子關系:
TreeArr1.png
一般二叉樹也可以采用這種結構,但會造成空間浪費...... 需要先補全成完全二叉樹
-
鏈表存儲
TreeList1.png
二叉樹的遍歷
先序遍歷 (根結點--> 左結點--> 右結點)
PreOrder.png
中序遍歷 (左結點--> 根結點--> 右結點)
Inorder.png
后序遍歷 (左結點--> 右結點--> 根結點)
PostOrder.png