Professional Documents
Culture Documents
1
2-3 Trees
Tính chất
¾ Mỗi nút trong có từ 2 đến 3 nút con
¾ Tất cả các nút lá ở cùng một mức
2
2-3 Trees
2-node 3-node
3
Example of 2-3 Node
4
Traversing a 2-3 Node
inorder(in ttTree: TwoThreeTree)
if(ttTree’s root node r is a leaf)
visit the data item(s)
else if(r has two data items)
{
inorder(left subtree of ttTree’s root)
visit the first data item
inorder(middle subtree of ttTree’s root)
visit the second data item
inorder(right subtree of ttTree’s root)
}
else
{
inorder(left subtree of ttTree’s root)
visit the data item
inorder(right subtree of ttTree’s root)
}
5
Searching a 2-3 Node
retrieveItem(in ttTree: TwoThreeTree,
in searchKey:KeyType,
out treeItem:TreeItemType):boolean
if(searchKey is in ttTree’s root node r)
{
treeItem = the data portion of r
return true
}
else if(r is a leaf)
return false
else
{
return retrieveItem( appropriate subtree,
searchKey, treeItem)
}
6
Inserting Items
Insert 39
7
Inserting Items
Insert 38
divide leaf
insert in leaf and move middle result
value up to parent
8
Inserting Items
Insert 37
9
Inserting Items
Insert 36
divide leaf
insert in leaf and move middle
value up to parent
overcrowded
node
10
Inserting Items
... still inserting 36
11
Inserting Items
After Insertion of 35, 34, 33
12
Các trường hợp của phép thêm khóa
13
Các trường hợp của phép thêm khóa
14
Inserting Items
How do we insert 32?
15
Inserting Items
16
Inserting Items
Final Result
17
Deleting Items
Delete 70
70
80
18
Deleting Items
Deleting 70: swap 70 with inorder successor (80)
19
Deleting Items
Deleting 70: ... get rid of 70
20
Deleting Items
Result
21
Deleting Items
Delete 100
22
Deleting Items
Deleting 100
23
Deleting Items
Result
24
Deleting Items
Delete 80
25
Deleting Items
Deleting 80 ...
26
Deleting Items
Deleting 80 ...
27
Deleting Items
Deleting 80 ...
28
Deleting Items
Final Result
comparison with
binary search tree
29
Deletion Algorithm (1)
Deleting item I:
30
Deletion Algorithm (2)
Redistribution
A sibling has 2 items:
Æ redistribute item
between siblings and
parent
Merging
No sibling has 2 items:
Æ merge node
Æ move item from parent
to sibling
31
Deletion Algorithm (3)
Redistribution
Internal node P has no item
Æ redistribute
Merging
Redistribution not possible:
Æ merge node
Æ move item from parent
to sibling
Æ adopt child of P
Nếu nút cha của nút P lại không có khóa nào cả, thì ta lại
tiếp tục phân bố lại khóa hoặc trộn
32
Deletion Algorithm (4)
33
Operations of 2-3 Trees
34
2-3-4 Trees
4 - node
Có 4 nút con
35
2-3-4 Tree Example
36
2-3-4 Tree: Insertion
Insertion procedure:
• Thêm khóa vào nút lá
Phương pháp:
• Trên path từ gốc xuống nút lá có thể chèn khóa vào nếu gặp nút
đầy (nút 4) thì tách nút
Æ insertion can be done in one pass
37
2-3-4 Tree: Insertion
Inserting 60, 30, 10, 20, 50, 40, 70, 80, 15, 90, 100
38
2-3-4 Tree: Insertion
Inserting 70 ...
39
2-3-4 Tree: Insertion
Inserting 80, 15 ...
... 90 ...
40
2-3-4 Tree: Insertion
Inserting 90 ...
41
2-3-4 Tree: Insertion
Inserting 100 ...
42
2-3-4 Tree: Insertion Procedure
43
2-3-4 Tree: Insertion Procedure
44
2-3-4 Tree: Insertion Procedure
45
2-3-4 Tree: Deletion
Deletion procedure:
• Chọn khóa thay thế ở nút lá bằng cách đẩy dần các khóa ở mức
dưới lên.
Phương pháp
• Trên path từ gốc xuống nút lá chứa khóa thay thế nếu gặp nút đơn
chứa 1 khóa (trừ nút gốc) thì tăng khóa cho nút này.
Æ deletion can be done in one pass
46
2-3-4 Tree: Deletion
Case 1: Nút anh em có từ 2 đến 3 khóa
ÆLấy một khóa từ nút anh em đẩy lên nút cha
ÆLấy một khóa từ nút cha xuống
Æ Ví dụ cần xóa 40
30 50 20 50
10 20 40 10 30 40
"rotation"
25 25
47
2-3-4 Tree: Deletion
Case 2: Nút anh em chỉ có 1 khóa
ÆLấy một khóa từ nút cha xuống ghép nó với nút và với nút anh em
Æ Ví dụ cần xóa 40
30 50 50
10 40 10 30 40
merging
25 35 25 35
48
2-3-4 Tree: Deletion Practice
49