1 / 19

Chapter 9 高度平衡二元搜尋樹 AVL Binary Search Tree

Chapter 9 高度平衡二元搜尋樹 AVL Binary Search Tree. 高度平衡二元樹. 何謂高度平衡二元樹 (height balanced binary tree) ? 空樹 (empty tree) 是高度平衡二元樹 假使 T 不是空的二元樹, T L 和 T R 分別是此二元樹的左子樹和右子樹,若符合下列二個條件,則稱 T 為高度平衡二元樹,也稱為 AVL-Tree 。 TL 和 TR 亦是高度平衡二元樹, |h L -h R |≦1 ,其中 h L 及 h R 分別是 T L 和 T R 的高度;

adora
Download Presentation

Chapter 9 高度平衡二元搜尋樹 AVL Binary Search Tree

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 9 高度平衡二元搜尋樹AVL Binary Search Tree

  2. 高度平衡二元樹 • 何謂高度平衡二元樹(height balanced binary tree)? • 空樹(empty tree)是高度平衡二元樹 • 假使T不是空的二元樹,TL和TR分別是此二元樹的左子樹和右子樹,若符合下列二個條件,則稱T為高度平衡二元樹,也稱為AVL-Tree。 • TL和TR亦是高度平衡二元樹, • |hL-hR|≦1,其中hL及hR分別是TL和TR的高度; • hL-hR為平衡因子(balanced factor,BF),在AVL-Tree中,每一節點的平衡因子為-1、0或1

  3. 高度平衡二元樹 • 一棵二元樹的平衡因子 Q BF= –2 M S BF=1 R P BF=0 BF=1 hL(M)=0, hR(M)=2 hL-hR=-2 BF=0 N

  4. 高度平衡二元樹加入及其調整方式 • 利用加入的節點A與它最接近平衡因子絕對值大於1(|BF|>1)的節點B • 高度平衡二元樹可能會因為加入或刪除某節點而造成不平衡,此時必須利用四種不同的調整方式來重建一棵AVL-tree使其平衡。 • 四種調整方式: • LL型:加入新節點於節點s的左子樹之左子樹 • RR型:加入新節點於節點s的右子樹之右子樹 • LR型:加入新節點於節點s的左子樹之右子樹 • RL型:加入新節點於節點s的右子樹之左子樹

  5. 高度平衡二元樹加入及其調整方式 原則: • 先找到最接近新節點之平衡因子絕對值大於1(|BF|>1)的祖先節點 • 將其高度降低使其符合AVL的定義 • LL 往右旋轉(rotate) • RR 往左旋轉 • LR 先右後左 • RL 先左後右

  6. 高度平衡二元樹加入及其調整方式 • LL型:加入新節點於節點s的左子樹之左子樹 2 0 50 50 40 加入30 調整 1 0 0 40 50 40 30 0 不是一棵AVL-tree 30

  7. 高度平衡二元樹加入及其調整方式 例二: 0 1 2 50 50 40 0 1 0 1 0 0 加入20 調整 60 60 50 40 40 30 0 0 1 0 0 0 0 45 45 60 30 30 20 45 0 20

  8. 高度平衡二元樹加入及其調整方式 • RR型:加入新節點於節點s的右子樹之右子樹 • 此RR型與LL型大同小異,如加入前的AVL-tree為: 0 0 -2 加入70 調整 60 50 50 0 0 0 -1 70 50 60 60 0 70 不是一棵AVL-tree

  9. 高度平衡二元樹加入及其調整方式 例二: 0 -1 -2 60 50 50 加入80 調整 0 0 0 0 -1 -1 70 50 60 60 40 40 0 0 0 0 0 0 -1 80 40 55 70 70 55 55 0 80

  10. 高度平衡二元樹加入及其調整方式 • LR型:加入新節點於節點s的左子樹之右子樹 2 50 45 50 加入45 調整 -1 40 40 50 40 0 45

  11. 高度平衡二元樹加入及其調整方式 例二: 2 50 50 -1 0 加入42 60 40 60 40 0 1 30 45 30 45 0 42

  12. 高度平衡二元樹加入及其調整方式 45 調整 50 40 60 30 42

  13. 高度平衡二元樹加入及其調整方式 • RL型:加入新節點於節點s的右子樹之左子樹 -2 加入56 調整 56 50 50 1 50 60 60 60 0 56

  14. 高度平衡二元樹加入及其調整方式 例二: -1 -2 加入52 56 調整 50 50 0 0 0 0 0 1 60 50 60 60 40 40 0 0 0 0 0 1 0 70 40 52 70 70 56 56 0 52

  15. 高度平衡二元樹刪除及其調整方式 • AVL-tree的刪除與二元搜尋樹的刪除相同,當刪除的動作完成後,再計算平衡因子,作適當的調整,直到平衡因子的絕對值皆小於等於1。

  16. 高度平衡二元樹刪除及其調整方式 • 假設存在一棵AVL-tree如左下圖,若欲刪除50,因為它為一樹葉節點,故直接刪除之,成為右下圖,刪除後再進行調整 2 -1 調整 刪除50 30 20 30 0 0 1 20 50 10 30 20 0 0 0 10 25 10 25 25

  17. 高度平衡二元樹刪除及其調整方式 • 從樹根尋找pivot點(遇到第一個BF值的絕對值大於1的節點) • 由pivot節點的BF值大於等於0時往左子樹、小於0則往右子樹找下一個節點,來決定調整的型態。

  18. 高度平衡二元樹刪除及其調整方式 • 調整規則如下: • 當pivotBF > 0 • pivotllinkBF >= 0 LL型 • pivotllinkBF <= 0 LR型 • 當pivotBF < 0 • pivotrlinkBF >= 0 RL型 • pivotrlinkBF <= 0 RR型

More Related