You are on page 1of 7

01/09/2021

Nội dung

Bài 7: Cây nhiều nhánh 1. Khái niệm


2. Đặc điểm và cấu trúc
B-Tree
3. Chèn phần tử vào cây
4. Xóa phần tử khỏi cây
TS. Trần Minh Thái - minhthai@huflit.edu.vn

1 2

1 2

Cây nhiều nhánh: M-Phân Khái niệm

Mỗi node có tối đa M node con Thứ tự các khóa tương tự cây nhị phân tìm kiếm
Một cây M-Phân đầy đủ có chiều cao logMN
 Mỗi node có M-1 khóa
 Ví dụ cây 5-Phân đầy đủ:
 M càng lớn cây càng thấp

 Giữ tính chất cân bằng trên cây tìm kiếm M-Phân: B-
Cây

3 4

3 4
1
01/09/2021

B-Tree B-Tree

B-Tree bậc M là cây M-Phân tìm kiếm có các  Hạn chế số thao tác đọc mỗi lần tìm kiếm
tính chất: trên cây
 Mỗi node (ngoại trừ gốc) có ít nhất M/2  Thích hợp cho việc tìm kiếm trên bộ nhớ
khóa ngoài
 Node gốc (nếu không phải nút lá) có ít nhất
2 nút con  Chiều cao cây = logMN, tăng M chiều cao
cây giảm rất nhanh
 Mọi nút lá đều nằm cùng một mức
 Các khóa và cây con được sắp xếp theo cây
tìm kiếm
5 6

5 6

Chèn node vào cây Ví dụ

Ý tưởng: Tìm vị trí khóa có thể thêm vào cây. Việc tìm Cho B-tree bậc 5 rỗng
kiếm sẽ kết thúc tại một lá. Khóa mới sẽ được thêm vào Hãy xây dựng B-Tree theo thứ tự từ trái sang phải cho
nút lá: dãy số sau:
1. Nếu chưa đầy  Việc thêm hoàn tất
2. Nếu đầy  Phân đôi nút lá cần thêm: 1 12 8 2 25 5 14 28 17 7 52 16 48 68 3 26 29 53 55 45
 Tách nút lá ra làm hai nút cạnh nhau trong cùng một
mức
 Chuyển phần tử giữa lên nút cha
Quá trình phân đôi các nút có thể được lan truyền ngược
về gốc và kết thúc khi có một nút cha nào đó cần được
thêm một khóa từ dưới lên mà chưa đầy
7 8

7 8
2
01/09/2021

1 12 8 2 25 5 14 28 17 7 52 16 48 68 3 26 29 53 55 45 1 12 8 2 25 5 14 28 17 7 52 16 48 68 3 26 29 53 55 45

Chèn 1 1 Do nút gốc đã đầy (4 phần tử)  Chèn 25 vào nút gốc sẽ
tách nút gốc thành 2 nút và đưa khóa ở giữa lên trên tạo
thành nút gốc mới
Chèn 12 1 12 1 2 8 12 25

Chèn 8 1 8 12
8

Chèn 2 1 2 8 12 1 2 12 25
9 10

9 10

1 12 8 2 25 5 14 28 17 7 52 16 48 68 3 26 29 53 55 45 1 12 8 2 25 5 14 28 17 7 52 16 48 68 3 26 29 53 55 45

Thêm 5 Thêm 28
8 8

1 2 5 12 25 1 2 5 12 14 25 28

Thêm 17, do nút lá bên phải đã đầy nên phân đôi và đưa
Thêm 14 nút giữa lên trên nút cha (nút gốc)
8
8 17

1 2 5 12 14 25
1 2 5 12 14 25 28
11 12

11 12
3
01/09/2021

1 12 8 2 25 5 14 28 17 7 52 16 48 68 3 26 29 53 55 45 1 12 8 2 25 5 14 28 17 7 52 16 48 68 3 26 29 53 55 45

Thêm 7 Thêm 16
8 17 8 17

1 2 5 7 12 14 25 28 1 2 5 7 12 14 16 25 28 52

Thêm 52 Thêm 48
8 17 8 17

1 2 5 7 12 14 25 28 52 1 2 5 7 12 14 16 25 28 48 52
13 14

13 14

1 12 8 2 25 5 14 28 17 7 52 16 48 68 3 26 29 53 55 45 1 12 8 2 25 5 14 28 17 7 52 16 48 68 3 26 29 53 55 45

Thêm 68, do nút lá bên phải đã đầy nên phân đôi nút lá và Thêm 26
đưa nút giữa lên nút cha (nút gốc)
8 17 48 3 8 17 48

1 2 5 7 12 14 16 25 28 52 68 1 2 5 7 12 14 16 25 26 28 52 68

Thêm 3, do nút lá bên trái đã đầy nên phân đôi nút lá và


Thêm 29
đưa nút giữa lên nút cha (nút gốc)
3 8 17 48 3 8 17 48

1 2 5 7 12 14 16 25 28 52 68 1 2 5 7 12 14 16 25 26 28 29 52 68
15 16

15 16
4
01/09/2021

1 12 8 2 25 5 14 28 17 7 52 16 48 68 3 26 29 53 55 45 1 12 8 2 25 5 14 28 17 7 52 16 48 68 3 26 29 53 55 45
Thêm 53 Thêm 45, do nút lá thứ 3 đầy nên phân đôi và đưa nút
3 8 17 48 giữa lên trên nút cha, nút cha cũng đầy nên phân đôi tiếp
nút cha và đưa nút giữa lên trên, tạo thành nút gốc mới

1 2 5 7 12 14 16 25 26 28 29 52 53 68
17

Thêm 55
3 8 28 48
3 8 17 48

1 2 5 7 12 14 16 25 26 28 29 52 53 55 68 1 2 5 7 12 14 16 25 26 29 45 52 53 55 68
17 18

17 18

Bài tập áp dụng Xóa khóa trên cây

Cho dãy số: 1. Nếu khóa cần xóa nằm ở nút lá  Xóa
1, 3, 9, 2, 4, 10, 25, 30, 11, 40, 21, 8, 7, 6, 19, 2. Nếu khóa cần xóa không nằm ở nút lá 
5, 35, 12, 15, 16 Xóa khóa cần xóa, đưa khóa có giá trị gần
Hãy trình bày từng bước tạo cây B-Tree bậc 5 nhất từ nút lá lên thay thế cho khóa đã xóa

19 20

19 20
5
01/09/2021

17
Xóa 68
Xóa khóa trên cây
3 8 28 48
Nếu trong trường hợp (1) hay (2), nút lá còn lại
quá ít khóa thì xét các nút anh em kế cận nút đang
xét: 1 2 5 7 12 14 16 25 26 29 45 52 53 55 68
3. Nếu tồn tại nút anh em kế cận nút đang xét có
số lượng khóa nhiều hơn số lượng tối thiểu, 17 Nút lá
đưa một khóa của nút anh em lên nút cha và Trường hợp 1
đưa khóa ở nút cha xuống nút lá có khóa quá ít
4. Nếu tất cả các nút anh em kế cận nút đang xét 3 8 28 48
đều có số lượng khóa vừa đủ số lượng tối
thiểu, chọn một nút anh em kế cận và hợp nhất
nút anh em này với nút lá có khóa quá ít. 1 2 5 7 12 14 16 25 26 29 45 52 53 55
Nếu nút cha thiếu khóa, lặp lại quá trình này
21
Vẫn còn đủ lượng
theo yêu cầu 22

21 22

Không phải nút lá 17 17


Xóa 8 Xóa 8
Trường hợp 4
3 8 28 48 3 7 28 48
Hợp nhất

1 2 5 7 12 14 16 25 26 29 45 52 53 55 1 2 5 12 14 16 25 26 29 45 52 53 55

17
17
Trường hợp 2
Còn quá ít khóa
3 7 28 48
7 28 48

1 2 5 12 14 16 25 26 29 45 52 53 55
1 2 3 5 12 14 16 25 26 29 45 52 53 55
Còn quá ít khóa 23 24

23 24
6
01/09/2021

17
Xóa 8
Bài tập áp dụng
Trường hợp 4
7 28 48
Hợp nhất

29 45 52 53 55 Sử dụng lại cây B-Tree của BT trước, trình bày lần


1 2 3 5 12 14 16 25 26
lượt xóa 16, 21, và 40

7 17 28 48

1 2 3 5 12 14 16 25 26 29 45 52 53 55

25 26

25 26

You might also like