11. การลบโหนดออกจาก Tree:
กรณีที่โหนดนั้นมี 2 child
before after
12
7 20
15 43
15
7 20
43
Replace the key of this node with the smallest key of right subtree.
12
7 20
15 43
12. แหล่งความรู ้เพิ่มเติม
Animated Binary Search Tree
1
http://www.cs.jhu.edu/~goodrich/
dsa/trees/btree.html
Animated Binary Search Tree 2
http://www.qmatica.com/DataStructu
res/Trees/BST.html
14. นิยามของ AVL Tree
• Tree นั้นจะต้องเป็ น binary search tree
• Tree นั้นจะต้องเป็ น Balanced tree
Balanced tree หมายถึง ทุกโหนดใน tree
ต้องมีความสูงของ
left sub-tree และ right sub-tree
ต่างกันไม่เกิน 1
15. เกิด Imbalance ที่โหนด 12
ดังนั้น tree นี้ไม่เป็ น AVL Tree
ตัวอย่างการตรวจสอบ AVL Tree
5
12
7 20
15 43
Node5 HL = 0, HR = 0 B
Node15 HL = 1, HR = 0 B
Node43 HL = 0, HR = 0 B
Node20 HL = 2, HR = 1 B
Node7 HL = 0, HR = 0 B
Node12 HL = 1, HR = 3 B
2
1
1 0
0
0
19. Left of Left
• เกิดเมื่อมีการแทรกโหนดเข้าไปด้าน sub-tree ฝั่งซ ้าย
ของโหนดลูกทางซ้าย
3
11
5 24
7
2
3
11
5 24
7
2
เกิด Imbalance
20. Right of Right
• เกิดเมื่อมีการแทรกโหนดเข้าไปด้าน sub-tree ฝั่งขวา
ของโหนดลูกทางขวา
15
11
5 24
45
82
15
11
5 24
45
82
เกิด Imbalance
21. Right of Left
• เกิดเมื่อมีการแทรกโหนดเข้าไปด้าน sub-tree ฝั่งขวา
ของโหนดลูกทางซ้าย
3
11
5 24
10
6
3
11
5 24
10
6
เกิด Imbalance
22. Left of Right
• เกิดเมื่อมีการแทรกโหนดเข้าไปด้าน sub-tree ฝั่งขวา
ของโหนดลูกทางซ้าย
15
11
5 24
45
18
15
11
5 24
45
18
เกิด Imbalance
23. การทา Balancing Tree
• Single rotation
การหมุน 1 ครั้ง ใช้กรณีเกิด Left of Left
และ Right of Right
• Double rotation
การหมุน 2 ครั้ง ใช้กรณีเกิด Right of Left
และ Left of Right
24. Single rotation : rotate
right
A
C
B
A
C
B
Rotate Right
เกิด Imbalance