You are on page 1of 59

B-TREE

DATA STRUCTURES AND ALGORITHMS

ThS Nguyễn Thị Ngọc Diễm


diemntn@uit.edu.vn
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

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 2


Định nghĩa B-tree using minimun degree

Cây B-tree T (với node root là T) có các tính chất sau:


1. Mỗi node x có các trường sau:
o x.n: số lượng khóa (keys) hiện tại lưu trữ trên node x ,
o x.n khóa được lưu theo thứ tự không giảm dần: x.key1 ≤
x.key2 ≤… ≤ x.keyx.n,
o x.leaf: trả về giá trị boolean, TRUE nếu x là node lá, FALSE nếu
x là node trong (internal node)

* 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”

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 3


Định nghĩa B-tree
2. Nếu x là internal node (node trong cây khác node root và node
lá), thì nó chứa x.n+1 con trỏ x.c1, x. c2, …, x. cx.n+1 tới node con
của nó. Node lá không có node con, vì vậy các trường ci không
được định nghĩa.
c1 k1 c2 k2 … cn xn cn+1

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)

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 4


Định nghĩa B-tree bậc m
5. Số lượng cây con của một node có chặn trên và chặn dưới. Các giới
hạn này được thể hiện dưới dạng một số nguyên cố định m ≥ 3 (m=2k+1,
với k là số tự nhiên >=1), gọi là bậc của cây B-tree.
a. Mỗi node trong (khác node gốc và lá) chứa ít nhất [m/2] cây con
và nhiều nhất m cây con. (Dấu [] lấy nguyên tròn lên trên, vd: 1.4 => lấy
2)
b. Tất cả các node, trừ node gốc , có từ [m/2]-1 khóa cho đến m - 1
khóa (keys). Node gốc có từ 1 dến m-1 khóa.
TÓM LẠI, cho m ≥ 3 là bậc của cây B-tree, ta có:
[m/2] ≤ số node con của mỗi node (khác root và lá) ≤ m
2 ≤ số node con của root (khác lá) ≤m
[m/2]-1 ≤ số khóa của mỗi node khác root ≤ m-1
1 ≤ số khóa của node root ≤ m-1

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

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 6


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

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 7


B-TREE-SEARCH

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.

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 9


B-TREE-INSERTION: (followed Bayer)
Quá trình thêm một khoá mới (newkey) vào B-tree có thể được mô
tả như sau:
o Tìm node newkey, nếu tìm thấy thì kết thúc (không thêm
vào nữa)
o Ngược lại, nếu không tìm thấy thì:
• Thêm newkey vào node lá nếu node chưa đầy và kết
thúc
• Ngược lại: Khi node được thêm vào bị đầy, node này sẽ
được tách thành 2 node cùng mức, khoá median sẽ được
dời lên node cha, quá trình này có thể lan truyền đến
node gốc
• Trong trường hợp node gốc bị đầy, node gốc sẽ bị tách và
dẫn đến việc tăng trưởng chiều cao của cây.

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 10


B-TREE-INSERTION:Tách node (followed Bayer)
 Cho node y có cha là x và hiện tại node y có nhiều
hơn m-1 khóa
 Di chuyển khóa ở giữa của y lên x
 Tạo node y’ mới, di chuyển phân nửa số node và phân nửa
số cây con còn lại của y sang y’
 Thêm y’ vào danh sách cây con của x
 Thao tác splitting có thể lan truyền (propagate) đến
nhiều mức phía trên.
 Split node gốc sẽ làm tăng chiều cao của cây.

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 11


Splitting a node: Minh họa
• Minh họa: split node đầy y thành 2 node y và z, đưa khóa median từ y
lên node cha x của y.
dời khóa và con trỏ của x qua phải 1 đơn vị

x … ci-1 ki-1 ci ki ci-+1 ki+1 … cx.n kx.n cx.n+1

y=x.ci c1 k1 … ct-1 kt-1 ct kt ct+1 kt+1 … c2t-1 k2t-1 c2t

x … ci-1 ki-1 ci ki=y.kt ci-+1 ki+1 … cx.n+1 kx.n+1 cx.n+2

y=x.ci z=x.ci+1
c1 k1 … ct-1 kt-1 ct ct+1 kt+1 … c2t-1 k2t-1 c2t

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 12


Splitting a node:Ví dụ:
• Ví dụ bên dưới minh họa quá trình split cho cây B-Tree bậc m=7.
o Ta cần tách node đầy y=x.ci với S là khóa median.
o Khóa S sẽ di chuyển lên node cha của y là node x.
o Tất cả khóa lớn hơn median sẽ di chuyển sang node mới là
node z, node z trở thành con của node x.

x x
… N W ... … N S W ...

y = x.ci y = x.ci z = x.ci+1

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

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 13


Splitting a node: Split node Root
• Tách gốc với cây B-Tree bậc m=7. Root r được tách làm 2 node.
Một root mới s được tạo ra chứa giá trị median của r, và nhận 2
node vừa được tách ra làm con. Cây B-Tree tăng trưởng lên 1
đơn vị chiều cao khi node root được tách.
root[T]
s
H
root[T]
r r
A B F H L N P A B F L N P

c1 c2 c3 c4 c5 c6 c7 c8 c1 c2 c3 c4 c5 c6 c7 c8

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 14


B-TREE-INSERTION:
 Một phương pháp tách khác gọi là: Proactive splitting -
preemptive splitting (xem trong slide B-Tree using
minimum degree)
 Khi tìm node để thêm khóa mới, nếu gặp một node có vừa
đủ m-1 khóa thì split luôn.
 Triệt tiêu lan truyền ngược
 Không tận dụng được hàm search
 Ưu nhược điểm khác ?

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 15


B-TREE-INSERTION: Example (followed Bayer)
5 11 16 21
Ví dụ:
(1)
Chèn số 9
vào cây B-
1 2 3 4 6 7 8 10 12 13 14 15 17 18 19 20 22 23 24 25
tree bậc 5
cho sẵn như 5 11 16 21
Chèn số 9 vào => node đầy.
=> Tách node: đưa số 8 lên
hình bên (2) node cha, node hiện tại tách
làm hai node.
cạnh:
1 2 3 4 6 7 8 9 10 12 13 14 15 17 18 19 20 22 23 24 25

Sau khi đưa 8 lên, node hiện tại đầy


=> Tiếp tục tách node: node hiện tại
5 8 11 16 21 tách làm hai node, đưa số 11 lên node
(3) cha.

1 2 3 4 12 13 14 15 17 18 19 20 22 23 24 25

6 7 9 10

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 16


B-TREE-INSERTION: Example (followed Bayer)
5 8 11 16 21

(3)
1 2 3 4 12 13 14 15 17 18 19 20 22 23 24 25

6 7 9 10
11

(4) Kết quả


5 8 16 21

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

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 18


B-TREE-INSERTION:Ví dụ 1
Insert 1, 2
1 2

Insert 3 2
1 2 3

1 3

Insert 4
2

1 3 4

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 19


B-TREE-INSERTION:Ví dụ 1
Insert 5
2 2 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

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 20


B-TREE-INSERTION:Ví dụ 1
Insert 8 4

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

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 22


B-TREE-INSERTION:Ví dụ 2
Insert 27, 19
19 27
23

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

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 26


B-TREE-INSERTION:Ví dụ 2
Insert 25 9 19

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

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 28


B-TREE-INSERTION:Ví dụ 2
Insert 22 9 19

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

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 30


B-TREE DELETION
Có 2 trường hợp xóa:
• Trường hợp 1: Xóa khóa x của node lá
o Xóa khóa x khỏi node lá
o Nếu số lượng khóa trong node lá sau khi xóa x nhỏ hơn số
lượng tối thiểu => Thực hiện Catenation hoặc Underflow
• Trường hợp 2: Xóa khóa x của node không phải node lá
o Tìm khóa thế mạng là khóa lớn nhất trên cây con bên tay trái
hoặc là khóa nhỏ nhất của cây con bên tay phải của node cần
xóa
o Hoán vị x với khóa thế mạng
o Tiến hành xóa khóa x ở lá

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 31


B-TREE DELETION

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 32


B-TREE DELETION - Catenation
• Cantenation: p và p’ gọi là adjacent brothers vì có cùng cha
Q và được trỏ bởi 2 con trỏ kề trong Q. 2 node p và p’
có thể thực hiện Cantenation nếu khi kết hợp p và p’ với
nhau có số khóa nhỏ hơn (<) số khóa tối đa của node.
• Việc xóa khóa yj khỏi Q có thể dẫn đến Q chứa ít hơn k
khóa, như vậy ta phải xử lý tiếp khóa Q. Quá trình này có
thể lan truyền tới tận gốc của cây.

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 33


B-TREE DELETION - Catenation
Q
… (yj-1, p) (yj, p’) (yj+1, pj+1) ...

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.

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 35


B-TREE DELETION - Ví dụ: Xóa khóa ở lá
Xóa 7 trên cây B-Tree bậc m=3

4 10 4 10
Xóa 7

0 5 7 15 0 5 15

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 36


B-TREE DELETION - Ví dụ: Xóa khóa ở lá
Xóa 0 trên cây B-Tree bậc m=3

4 10 4 10
B1: Xóa 0

0 5 7 15 5 7 15

Tổng số khóa của {} và {5, 7} là 2 = số khóa Tối đa


=> Thực hiện thao tác Underflow {} và {5, 7}

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

Tống số khóa {} và {7} là 1 (<2k, với m=2k+1)


=> Thực hiện thao tác Catenate {} và {7}
10
B2: Catenate {} và {7}

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

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 41


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 12 là key thế mạng
Xóa 10 12
10
B1: Chọn node thể mạng là
12, đổi chỗ 12 và 10

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

B2: Xóa 11 tại lá


9 21
3 7 15 25 B3: Catenate {5} và { }

3 15 25
1 5 13 17 19 23 27 29

1 5 7 13 17 19 23 27 29

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 44


B-TREE DELETION - Vd: Xóa ở node gốc
Xóa 21 trên cây B-Tree bậc 3
Xóa 21
9 21

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

B1: Chọn khóa 13 thay


thế. Hoán đổi 15 và 13
3 15 25 3 13 25

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

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 46


B-TREE DELETION - Vd: Xóa node khác lá
• Xóa 7 trên cây B-Tree bậc 3:
Xóa 7
11 21

3 7 15 25

1 2 5 9 13 17 19 23 27 29

11 21

B1: Chọn khóa 5 làm


khóa thay thế. Hoán 3 5 15 25
đổi 5 và 7

1 2 7 9 13 17 19 23 27 29

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 47


B-TREE DELETION - Vd: Xóa node khác lá
11 21
• Tại đây chọn 1 trong 2 cách xử
B2: Xóa 7
lý sau:
3 5 15 25
o Underflow {1, 2} và {}
o Hoặc Catenate {} và {9}
1 2 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

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 49


B-TREE DELETION - Vd: Xóa node khác lá

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

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 50


B-TREE DELETION - Vd: Xóa node khác lá
• Xóa 3 trên cây B-Tree bậc 3:
Xóa 3 11 11
B1: Chọn 5 thay
thế cho 3. Hoán
3 7 15 đổi 3 và 5 5 7 15

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

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 52


B-TREE DELETION - Ví dụ: Xóa ở node lá
• Xóa 9 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
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

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 53


B-TREE DELETION - Xóa ở node lá
• Nhận thấy node {10} có 1 phần tử, anh em kề với 10 là {6,
7} có đủ k phần tử => Thực hiện Catenate {6, 7} và {10}
11

5 8 16 21

1 2 3 4 6 7 10 12 13 14 15 17 18 19 20 22 23 24 25

11

B2: Catenate {6, 7} và {10} 5 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 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

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
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}

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 56


B-TREE DELETION - Xóa ở node lá
• Trường hợp: Catenate {6} và {9 10}
11

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

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 57


B-TREE DELETION - Xóa ở node lá
• Trường hợp: Underflow {1 2 3 4} và {6}
11
=> Có 2 kết quả có thể:
5 8 16 21

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!

DSA- THS. NGUYỄN THỊ NGỌC DIỄM 59

You might also like