2.2 - Binary Tree
介紹Binary Tree的定義、基本定理及表示方法
1. 定義
可以為空(node=0),若不為空則必須有Root及左右子樹
左右子樹必須為Binary Tree
左右子樹有方向之別
2. 基本定理及證明
2.1 在Binary Tree中,第 level中最多 有個nodes
數學歸納法:
for level = 1, 個nodes
if level = n-1 holds, show that level = n also holds
for level =n , nodes of n = 2*nodes of n-1
2.2 高度 的Binary Tree,最多nodes數為 ;最少nodes數為
2.3 在一個非空二元樹,若degree為0的nodes數(leaf)有 ,degree為2的nodes數有 ,則
假設: 為nodes總數
為degree=1的nodes數
為branches總數(links)
3. 種類
Skewed Binary Tree
可分為:left-skewed及right-skewed binary tree
Full Binary Tree
擁有最多節點數的Binary Tree( )
Complete Binary Tree
高度為k且擁有n個節點,且滿足
節點編號與高度為k的Full Binary Tree的前n個節點編號一一對應
若complete binary tree的某個節點編號為i,則i的
左子點編號為 ,若 則無左子點
右子點編號為 ,若 則無右子點
父點編號為 ,若 則無父點
Strict Binary Tree
Binary Tree中每個non-leaf節點必有兩個子點,即
4. 表示方法
4.1 使用Array儲存
按照full binary tree的節點編號儲存到對應的矩陣indice中
優點:
容易存取左右子點及父點
對於full/complete binary tree沒有儲存空間浪費
缺點:
節點增減較麻煩
對於skewed binary tree非常浪費空間
4.2 使用Linklist儲存
[point to left child][data][point to right child]
優點:
節點增減容易
對於skewed binary tree相較於array節省空間
缺點:
不易存取父點
links空間浪費約50%
Last updated