Professional Documents
Culture Documents
* Cây B-tree do R.Bayer và E.M.McCreight đưa ra năm 1972 trong bài báo: “Bayer,
R.; McCreight, E. (1972), "Organization and Maintenance of Large Ordered Indexes"
(PDF), Acta Informatica, 1 (3): 173–189, doi:10.1007/bf00288683”
3. Các khóa x. keyi phân chia phạm vi các khóa được lưu trữ trong
mỗi cây con: nếu ki là bất kỳ khóa nào được lưu trữ trong cây con
có gốc ci[x] thì:
k1 ≤ x. key1 ≤ k2 ≤ x. key2 ≤…≤ x. keyx.n ≤ kx.n+1
4. Các node lá có cùng độ sâu h (trong đó h là chiều cao của cây)
Cây B-tree đơn giản nhất được tạo khi m=3. Mỗi internal node có thể có 2
hoặc 3 cây con. Đây là cây 2-3.
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 5
Nội dung
1. Định nghĩa using degree/order
2. Các phép toán cơ bản
i. B-TREE-TRAVERSE
ii. B-TREE-SEARCH
iii. B-TREE-INSERTION
iv. B-TREE DELETION
C1 K1 C2 K2 … Cn Kn Cn+1
• Các trường hợp xảy ra khi tìm 1 node X. Nếu X không tìm
thấy sẽ có 3 trường hợp sau xảy ra:
o Ki < X < Ki+1 : Tiếp tục tìm kiếm trên cây con Ci+1
o Km < X : Tiếp tục tìm kiếm trên Cn+1
o X < K1 : Tiếp tục tìm kiếm trên C1
• Quá trình này tiếp tục cho đến khi node được tìm thấy. Nếu
đã đi đến node lá mà vẫn không tìm thấy khoá, việc tìm
kiếm là thất bại.
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 8
B-TREE-SEARCH
• B-TREE-SEARCH is a generalization of the TREE-SEARCH
procedure defined for binary search trees. It takes as input
a pointer to the root node x of a subtree and a key k to
be searched for in that subtree.The top-level call is thus of
the form B-TREE-SEARCH( root[T], k)
• More precisely, at each internal node x, we make an
(x.n+1)-way branching decision.
• Ifk is in the B-tree, B-TREE-SEARCH returns the ordered
pair ( y, i ) consisting of a node y and an index i such that
keyi[y] = k. Otherwise, the value NIL is returned.
y=x.ci z=x.ci+1
c1 k1 … ct-1 kt-1 ct ct+1 kt+1 … c2t-1 k2t-1 c2t
x x
… N W ... … N S W ...
P Q R S T U V P Q R T U V
T1 T2 T3 T4 T5 T6 T7 T8 T1 T2 T3 T4 T5 T6 T7 T8
c1 c2 c3 c4 c5 c6 c7 c8 c1 c2 c3 c4 c5 c6 c7 c8
1 2 3 4 12 13 14 15 17 18 19 20 22 23 24 25
6 7 9 10
(3)
1 2 3 4 12 13 14 15 17 18 19 20 22 23 24 25
6 7 9 10
11
1 2 3 4 9 10 12 13 14 15 22 23 24 25
6 7 17 18 19 20
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 17
B-TREE-INSERTION:Ví dụ 1
Ví dụ 1: Tạo cây B-Tree bậc m=3 từ dãy gồm 9 số nguyên
từ 1 đến 9.
Bài làm:
Áp dụng vào bài, B-tree bậc 3 nên ta có:
1 ≤ số khóa của mỗi node khác root ≤2
1 ≤ số khóa của node root ≤2
2 ≤ số node con của mỗi node (khác root và lá) ≤ 3
2 ≤ số node con của mỗi node root (khác lá) ≤ 3
Insert 3 2
1 2 3
1 3
Insert 4
2
1 3 4
1 3 4 5 1 3 5
Insert 6 2 4
1 3 5 6
4
Insert 7 2 4 2 4 6
2 6
1 3 5 6 7 1 3 5 7
1 3 5 7
2 6
1 3 5 7 8
Insert 9
4 4
2 6 2 6 8
1 3 5 7 8 9 1 3 5 7 9
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 21
B-TREE-INSERTION: Example (followed Bayer)
Ví dụ 2: Tạo cây B-Tree bậc m=3 từ dãy gồm 16 số
nguyên: 27, 19, 23, 9, 1, 3, 11, 21, 5, 13, 17, 15, 29, 25, 20 và
22.
Bài làm:
Áp dụng vào bài, B-tree bậc 3 nên ta có:
1 ≤ số khóa của mỗi node khác root ≤2
1 ≤ số khóa của node root ≤2
2 ≤ số node con của mỗi node (khác root và lá) ≤ 3
2 ≤ số node con của mỗi node root (khác lá) ≤ 3
Insert 23
19 23 27
19 27
Insert 9 23
9 19 27
Insert 1
23 9 23
1 9 19 27 1 19 27
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 23
B-TREE-INSERTION:Ví dụ 2
9 23
Insert 3, 11
1 3 11 19 27
19
Insert 21 9 23
9 23
1 3 11 19 21 27
1 3 11 21 27
Insert 5 19 19
9 23 3 9 23
1 3 5 11 21 27 1 5 11 21 27
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 24
B-TREE-INSERTION:Ví dụ 2
Insert 13
19
3 9 23
1 5 11 13 21 27
Insert 17 19
9 19
3 9 23
3 13 23
1 5 11 13 17 21 27
1 5 11 17 21 27
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 25
B-TREE-INSERTION: Ví dụ 2
Insert 15, 29
9 19
3 13 23
1 5 11 15 17 21 27 29
3 13 23
1 5 11 15 17 21 25 27 29
9 19
3 13 23 27
1 5 11 15 17 21 25 29
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 27
B-TREE-INSERTION:Ví dụ 2
Insert 20
9 19
3 13 23 27
1 5 11 15 17 20 21 25 29
3 13 23 27
1 5 11 15 17 20 21 22 25 29
19
9 23
3 13 21 27
1 5 11 15 17 20 22 25 29
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 29
Nội dung
1. Định nghĩa using degree/order
2. Các phép toán cơ bản
i. B-TREE-TRAVERSE
ii. B-TREE-SEARCH
iii. B-TREE-INSERTION
iv. B-TREE DELETION
p p’
p0 (x1, p1) … (xt, pt) p’0 (xt+1, pt+1) ….
Q
… (yj-1, p) (yj+1, pj+1) ...
p
p0 (x1, p1) … (xt, pt) (yj, p’0) (xt+1, pt+1) ….
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 34
B-TREE DELETION – Underflow
• Underflow: Nếu tổng số lượng khóa của node p và p’
nhiều hơn 2k (>=2k, với bậc m=2*k+1, hoặc số khóa tối
đa), thì khóa trong p và p’ có thể chia đều nhau, quy trình
này gọi là underflow, được thực hiện như sau:
o Catenation p và p’ cho ra node p lớn
o Split p lớn như thao tác split trình bày ở phần trên.
o Chú ý: thao tác Underflow không lan truyền. Q được
sửa đổi, nhưng số lượng khóa thì không thay đổi.
4 10 4 10
Xóa 7
0 5 7 15 0 5 15
4 10 4 10
B1: Xóa 0
0 5 7 15 5 7 15
5 10
B2: Thực hiện thao tác
Underflow {} và {5, 7}
4 7 15
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 37
B-TREE DELETION - Ví dụ: Xóa khóa ở lá
Xóa 4 trên cây B-Tree bậc m=3
Xóa 4 5 10
5 10
B1: Xóa 4
4 7 15 7 15
5 7 15
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 38
B-TREE DELETION - Ví dụ: Xóa khóa ở lá
• Xóa 6 trong cây B-Tree m=3
Xóa 6 8
8
B1: Xóa 6
4 10 15
4 10 15
0 6 9 12 20 0 9 12 20
8
10
B2: Catenate {0} và {}
B3: Underflow {} và {10, 15}
Do {} và {10, 15} có 2 khóa =2k
10 15 8 15
0 4 9 12 20 0 4 9 12 20
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 39
B-TREE DELETION - Ví dụ: Xóa khóa ở lá
• Tiếp tục Xóa 12:
Xóa 12 10 10
B1: Xóa 12
8 15 8 15
0 4 9 12 20 0 4 9 20
10
Catenate {} và {20}
8 10
8
Catenate {8} và {}
0 4 9 15 20
0 4 9 15 20
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 40
B-TREE DELETION - Vd: Xóa khóa node khác lá
• Xóa 10 trên cây B-Tree bậc m=3, chọn 9 làm key thế mạng
9
Xóa 10
10 B1: Chọn node thể mạng là
9, đổi chỗ 9 và 10
9
8 15 B2: Xóa 10
8 15
8 15
0 10 12 14 20 25
0 9 12 14 20 25
0 12 14 20 25
9
B3.1 Catenate {0} và {}
B3.2: Catenate {}
9 15
và {15} Kết quả cuối
15 cùng
9 15
0 8 12 14 20 25
0 8 12 14 20 25
0 8 12 14 20 25
8 15 8 15
0 9 12 14 20 25 0 9 10 14 20 25
12
B2: Xóa 10
8 15
0 9 14 20 25
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 42
B-TREE DELETION - Vd: Xóa khóa node khác lá
• Xóa 12 trên cây B-Tree bậc m=3
Xóa 12 14
12
B1: Chọn node thể mạng là
14, đổi chỗ 12 và 14
8 15 8 15
0 9 14 20 25 0 9 12 20 25
14 14
B3: Underflow {} và {20, 25}
B2: Xóa 12
8 15 8 20
0 9 20 25 0 9 15 25
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 43
B-TREE DELETION - Vd: Xóa ở node gốc
• Xóa 11 trên cây B-Tree bậc 3, chọn khóa thay thế là khóa lớn nhất
của cây con bên trái.
11 21 9 21
B1: Hoán đổi 9 và 11
3 7 15 25 3 7 15 25
1 5 9 13 17 19 23 27 29 1 5 11 13 17 19 23 27 29
9 21
3 15 25
1 5 13 17 19 23 27 29
1 5 7 13 17 19 23 27 29
3 15 25 9 19
B1: Hoán đổi 21 và
19
1 5 7 13 17 19 23 27 29
3 15 25
1 5 7 13 17 21 23 27 29
9 19
B2: Xóa 21
3 15 25
1 5 7 13 17 23 27 29
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 45
B-TREE DELETION - Vd: Xóa node khác lá
• Xóa 15 trên cây B-Tree bậc 3:
Xóa 15
9 21 9 21
1 5 7 13 17 19 23 27 29 1 5 7 15 17 19 23 27 29
9 21 9 21
B3: Underflow {} và {17, 19}
B2: Xóa 15
3 13 25 3 17 25
1 5 7 17 19 23 27 29 1 5 7 13 19 23 27 29
3 7 15 25
1 2 5 9 13 17 19 23 27 29
11 21
1 2 7 9 13 17 19 23 27 29
11 21
B3: Underflow {1, 2} và{}
2 5 15 25
1 3 9 13 17 19 23 27 29
11 21
B3': Có thể
Catenate {} và 3 15 25
{9}
1 2 5 9 13 17 19 23 27 29
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 48
B-TREE DELETION - Vd: Xóa node khác lá
Xóa 5
11 21
3 7 15 25
1 2 5 8 9 13 17 19 23 27 29 Có 2 cách xử lý sử
dụng Underflow ở
11 21 đây!
B1: Xóa 5
3 7 15 25
1 2 8 9 13 17 19 23 27 29
11 21
B2': Underflow
{1, 2} và {}
2 7 15 25
1 3 8 9 13 17 19 23 27 29
11 21
Hoặc: B2':
Underflow {}
và {8 9} 2 8 15 25
1 2 7 9 13 17 19 23 27 29
1 5 9 13 17 19 1 3 9 13 17 19
• Tại
đây có 2 cách xử lý:
11
B2: Xóa 3
oCatenate {1} và {} Hoặc Catenate {} và {9}
5 7 15 11
B3: Catenate
{1} và {}
7 15
1 9 13 17 19
1 5 9 13 17 19
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 51
B-TREE DELETION - Vd: Xóa node khác lá
11
B3': Hoặc
Catenate
{} và {9} 5 15
1 7 9 13 17 19
5 8 16 21
1 2 3 4 6 7 9 10 12 13 14 15 17 18 19 20 22 23 24 25
11
B1: Xóa 9 tại lá
5 8 16 21
1 2 3 4 6 7 10 12 13 14 15 17 18 19 20 22 23 24 25
5 8 16 21
1 2 3 4 6 7 10 12 13 14 15 17 18 19 20 22 23 24 25
11
1 2 3 4 6 7 8 10 12 13 14 15 17 18 19 20 22 23 24 25
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 54
B-TREE DELETION - Xóa ở node lá
11
5 16 21
1 2 3 4 6 7 8 10 12 13 14 15 17 18 19 20 22 23 24 25
5 11 16 21
1 2 3 4 6 7 8 10 12 13 14 15 17 18 19 20 22 23 24 25
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 55
B-TREE DELETION - Xóa ở node lá
Xóa 7 trên cây B-Tree bậc 5
11
5 8 16 21
1 2 3 4 6 7 9 10 12 13 14 15 17 18 19 20 22 23 24 25
11
5 8 16 21
B1: Xóa 7
1 2 3 4 6 9 10 12 13 14 15 17 18 19 20 22 23 24 25
•Ở đây có thể xử lý
o Underflow {1 2 3 4} và {6}
o Hoặc Catenate {6} và {9 10}
5 8 16 21
1 2 3 4 6 9 10 12 13 14 15 17 18 19 20 22 23 24 25
11
B2: Catenate {6} và {9, 10}
5 16 21
1 2 3 4 6 8 9 10 12 13 14 15 17 18 19 20 22 23 24 25
5 11 16 21
B3: Catenate {5} và {16, 21}
1 2 3 4 6 7 8 10 12 13 14 15 17 18 19 20 22 23 24 25
1 2 3 4 6 9 10 12 13 14 15 17 18 19 20 22 23 24 25
11
B3'.1: Underflow {1 2 4 8 16 21
3 4} và {6}
1 2 3 5 6 9 10 12 13 14 15 17 18 19 20 22 23 24 25
11
Hoặc B3'.2:
Underflow {1 2 3 4}
và {6} 3 8 16 21
1 2 4 5 6 9 10 12 13 14 15 17 18 19 20 22 23 24 25
DSA- THS. NGUYỄN THỊ NGỌC DIỄM 58
Chúc các em học tốt!