การลบโหนดออกจาก Tree:
กรณีที่โหนดนั้นมี 2child
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 BinarySearch 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
นิยามของ 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
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