Extended Binary Tree - 延伸二元樹
- 在一般的 Binary Tree 中 Leaf 的 Link 為 Null,而我們將指向 Null 改成指向一種 Node 稱做:
-
紅色 Node:External Node ( Failure Node ) 外部節點 (失敗節點)
-
藍色 Node:內部節點 (Internal Node)
- 另一版本定義 External Node = Leaf,Internal Node = Non-Leaf
- 在 Binary Tree 中有談到 N 個 Nodes 則擁有 N+1 條的 Link 指向 Null
同理,此時我們將會有 N+1 個 External Node = 3+1 = 4
Internal Path Length - 內部路徑長
External Path Length - 外部路徑長
定理:E = I + 2N
Skewed Extended Binary Tree
- 公式:內部路徑長 = 0 + 1 + 2 + … + (n-1) =
- 根據 E = I + 2N =
Weighted External Path Length (WEPL) - 加權外部路徑長
- 將各 External Path Length * 相對應的 External Node 之加權值即可
- 當有加權值存在,高度愈小 WEPL 不一定愈小
Minimum Weighted External Path Length (MWEPL) - 最小加權外部路徑長
Huffman Algo. - 霍夫曼編碼
- 取出 5 , 5 (第一個 5 的樹繼續使用,與新的 5 合併)
- 5 + 5 = 10 ,將 10 繪成內部節點,刪除 5 , 5 將 10 放入集合 { }
- 取出 7 , 9 相加、並刪除 7 , 9 將 16 放入集合 { }
- 取出 10 , 11 相加、並刪除 10 , 11 將 21 放入集合 { }
- 最後兩元素 { } 取出相加即完成
- 最佳 WEPL:
Time Complexity:
使用 Min-Heap 維持加權值,插入 = 刪除 = n(log2n)
總共 n-1 回合 -> n(nlog2n)
應用
- N 個回合最佳合併方式 (Merge Sort)
- N 個 Messages 編碼/解碼 之最佳方法
- 為訊息
- 依照個字母出現的次數依序給出他的權重,或也可以將次數改成頻率
- 編碼方式:建立完 Tree 後將 Left Child 填上 0,Right Child 填上 1

- 此種方式為 Optimal Prefix Code,是 Unique 的