Presentation is loading. Please wait.

Presentation is loading. Please wait.

8.1 何謂高度平衡二元搜尋樹 8.2 高度平衡二元搜尋樹的加入 8.3 高度平衡二元搜尋樹的刪除

Similar presentations


Presentation on theme: "8.1 何謂高度平衡二元搜尋樹 8.2 高度平衡二元搜尋樹的加入 8.3 高度平衡二元搜尋樹的刪除"— Presentation transcript:

1 8.1 何謂高度平衡二元搜尋樹 8.2 高度平衡二元搜尋樹的加入 8.3 高度平衡二元搜尋樹的刪除
Chapter 8 高度平衡二元搜尋樹 8.1 何謂高度平衡二元搜尋樹 8.2 高度平衡二元搜尋樹的加入 8.3 高度平衡二元搜尋樹的刪除

2 8.1 何謂高度平衡二元搜尋樹 何謂高度平衡二元樹(height balanced binary tree)?
8.1 何謂高度平衡二元搜尋樹 何謂高度平衡二元樹(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 8.1 何謂高度平衡二元搜尋樹 一棵二元樹的平衡因子

4 8.2 高度平衡二元搜尋樹的加入 高度平衡二元搜尋樹在加入或刪除後,可能會造成不平衡,此時可利用LL,RR,LR,RL 等四種不同的調整方式,使其符合AVL-tree 的定義。 1. LL:加入的新節點N 在節點p 的左邊的左邊。 2. RR:加入的新節點N 在節點p 的右邊的右邊。 3. LR:加入的新節點N 在節點p 的左邊的右邊。 4. RL:加入的新節點N 在節點p 的右邊的左邊。

5 8.2 高度平衡二元搜尋樹的加入 LL型:加入新節點於節點s的左子樹之左子樹 加入30 調整 不是一棵AVL-tree 2 50 50 40
8.2 高度平衡二元搜尋樹的加入 LL型:加入新節點於節點s的左子樹之左子樹 2 50 50 40 加入30 調整 1 40 40 30 50 不是一棵AVL-tree 30

6 8.2 高度平衡二元搜尋樹的加入 例二: 1 2 50 50 40 1 加入20 調整 40 60 40 60 30 50 1 30 45 30 45 20 45 60 20

7 8.2 高度平衡二元搜尋樹的加入 RR型:加入新節點於節點s的右子樹之右子樹 此RR型與LL型大同小異,如加入前的AVL-tree為:
8.2 高度平衡二元搜尋樹的加入 RR型:加入新節點於節點s的右子樹之右子樹 此RR型與LL型大同小異,如加入前的AVL-tree為: -2 加入70 調整 60 50 50 -1 50 70 60 60 70 不是一棵AVL-tree

8 8.2 高度平衡二元搜尋樹的加入 例二: 加入80 調整 -1 -2 50 50 60 -1 40 60 40 60 50 70 -1 55
8.2 高度平衡二元搜尋樹的加入 例二: -1 -2 50 50 60 加入80 調整 -1 40 60 40 60 50 70 -1 55 70 55 70 40 55 80 80

9 8.2 高度平衡二元搜尋樹的加入 LR型:加入新節點於節點s的左子樹之右子樹 加入45 調整 2 50 50 45 -1 40 40 40
8.2 高度平衡二元搜尋樹的加入 LR型:加入新節點於節點s的左子樹之右子樹 2 50 50 45 加入45 調整 -1 40 40 40 50 45

10 8.2 高度平衡二元搜尋樹的加入 例二: 2 50 50 -1 加入42 40 60 40 60 1 30 35 30 35 42

11 8.2 高度平衡二元搜尋樹的加入 45 調整 40 50 30 42 60

12 8.2 高度平衡二元搜尋樹的加入 RL型:加入新節點於節點s的右子樹之左子樹 加入56 調整 -2 50 50 56 1 60 60 60
8.2 高度平衡二元搜尋樹的加入 RL型:加入新節點於節點s的右子樹之左子樹 -2 加入56 調整 50 50 56 1 60 60 60 60 56

13 8.2 高度平衡二元搜尋樹的加入 例二: 加入52 調整 -1 -2 50 50 56 1 40 60 40 60 50 60 1 56
8.2 高度平衡二元搜尋樹的加入 例二: -1 -2 50 加入52 50 調整 56 1 40 60 40 60 50 60 1 56 70 56 70 40 52 70 52

14 8.3 高度平衡二元搜尋樹的刪除 高度平衡二元搜尋樹的刪除方法與二元搜尋樹相同,當刪除的動作完成後,必需再計算平衡因子,並做適當的調整。

15 8.3 高度平衡二元搜尋樹的刪除 假設存在一棵AVL-tree如左下圖,若欲刪除50,因為它為一樹葉節點,故直接刪除之,成為右下圖,刪除後再進行調整 2 -1 加入50 調整 30 30 20 1 20 50 20 10 30 10 25 10 25 25

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

17 8.3 高度平衡二元搜尋樹的刪除 調整規則如下: 當pivot.BF >= 0 當pivot.BF < 0
8.3 高度平衡二元搜尋樹的刪除 調整規則如下: 當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型


Download ppt "8.1 何謂高度平衡二元搜尋樹 8.2 高度平衡二元搜尋樹的加入 8.3 高度平衡二元搜尋樹的刪除"

Similar presentations


Ads by Google