ต้นไม้�Tree (3)
อาจารย์สุวิชยะ รัตตะรมย์
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร
หัวข้อวันนี้
2
binary search tree
3
>
4
ตัวอย่าง Binary Search Tree ที่ถูกต้อง
5
ตัวอย่าง Binary Search Tree ที่ไม่ถูกต้อง
binary search (การค้นหาแบบขจัดครึ่ง)
6
12
18
20
23
35
44
52
binary search tree
7
สิ่งที่ควรทราบเพิ่มเติมเกี่ยวกับ binary search tree
8
operation ที่ต้องทำใน BST
การเพิ่มโหนด
9
10
ตัวอย่าง การเพิ่มข้อมูลใน Binary Search Tree
11
การลบโหนด ใน BST
ต้องพิจารณาว่า Node ที่จะลบนั้นตรงกับกรณี
1. ไม่มี Child
2. มีเฉพาะ Right Subtree
3. มีเฉพาะ Left Subtree
4. มีทั้ง Left และ Right Subtree
12
<== ลบได้เลย
<== ดึง Right Subtree ขึ้นมา
<== ดึง Left Subtree ขึ้นมา
นำค่าที่มากที่สุดของ Left Subtree มาแทน
13
ตัวอย่าง กรณีที่ 1 ไม่มีโหนดลูก
23
18
X
X
44
X
X
before delete 44
23
X
18
X
X
after delete 44
14
ตัวอย่าง กรณีที่ 2 มีเฉพาะ right subtreee
23
18
X
X
44
X
before delete 44
46
X
X
58
X
after delete 44
23
18
X
X
46
X
X
58
X
15
ตัวอย่าง กรณีที่ 3 มีเฉพาะ left subtreee
23
18
X
X
44
X
before delete 44
36
X
X
28
X
23
18
X
X
after delete 44
36
X
X
28
X
16
ตัวอย่าง กรณีที่ 4 มีโหนดลูกทั้ง 2 ข้าง
23
18
44
X
before delete 23
20
X
X
10
X
X
20
18
X
44
X
after delete 23
10
X
X
การสร้าง BST
17
10
X
X
insert 10
insert 15
10
X
15
X
X
insert 8
10
15
X
X
8
X
X
18
insert 14
10
15
X
8
X
X
14
X
X
insert 13
10
15
X
8
X
X
14
X
13
X
X
insert 12
10
15
X
8
X
X
14
X
13
X
12
X
X
19
10
X
12
X
18
X
24
X
25
X
X
20
AVL tree (Adel’son, Vel’skii and Landis)
bf = | HL - HR |
| bf | <= 1
21
22
0
-1
-2
-3
-4
-5
-6
-7
0
0
0
0
0
1
-1
1
23
AVL tree
unbalanced BST
Balancing Tree (หลักการทำต้นไม้ให้สมดุล)
- SLR (single left rotation) - SRR (single right rotation)
- DLR (double left rotation) - DRR (double right rotation)
24
SLR (single left rotation)
25
26
SLR
SRR (single right rotation)
27
28
SRR
DLR (double left rotation)
29
30
DLR
case ที่ 1
31
DLR
case ที่ 2
+
DRR (double right rotation)
32
33
0
DRR
case ที่ 1
34
DRR
case ที่ 2
1.จงสร้าง Binary Search Tree จากข้อมูลต่อไปนี้� 3 2 1 4 5 6 7 16 15 14 13 11
2.จงสร้าง AVL Tree จากข้อมูลในข้อที่ 1
35
การบ้าน