Professional Documents
Culture Documents
Cấu - trúc - dữ - liệu - B -Cây - Nhom4
Cấu - trúc - dữ - liệu - B -Cây - Nhom4
Nội dung:
• Định nghĩa
Nhóm 4
• Các phép toán
1
Thành viên nhóm
2
Giới thiệu
3
Giới thiệu
4
Định nghĩa
Có nhiều định nghĩa khác nhau của B-cây trong các tài liệu. Sau đây là một định nghĩa.
2. Mỗi nút trong x chứa n[x]+1 con trỏ tới các nút con của x.
3. Mỗi khóa tại x có giá trị nằm giữa giá trị các khóa tại hai cây con tương ứng của x: khóa thứ i của x lớn hơn hoặc bằng
mọi khóa ở cây con thứ i của x và nhỏ hơn hoặc bằng mọi khóa ở cây con thứ i+1 của x.
5. Số khóa của mỗi nút nằm trong một khoảng định trước. Khoảng này được quyết định bởi tham số t≥2.
1. Mỗi nút trong khác gốc có ít nhất t-1 khóa. Nếu cây khác rỗng thì nút gốc phải có ít nhất một khóa.
Tìm kiếm
Xét node trong hình trên, khóa cần tìm là X. Giả sử nội dung của node nằm trong bộ
nhớ. Với m đủ lớn ta sử dụng phương pháp tìm kiếm nhị phân, nếu m nhỏ ta sử dụng
phương pháp tìm kiếm tuần tự. Nếu X không tìm thấy sẽ có 3 trường hợp sau xảy ra:
1) Ki < X < Ki₊₁. Tiếp tục tìm kiếm trên cây con Ci
2) Km < X. Tiếp tục tìm kiếm trên Cm
3) X < K₁. Tiếp tục tìm kiếm trên C₀
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 khóa, việc tìm kiếm là thất bại.
6
Các phép toán
Phép toán nodesearch được dùng để tìm khóa k có trong nút p hay không. Nếu khóa k không có trong
nút p thì phép toán này trả về vị trí giúp chúng ta chọn nút con phù hợp của p để tiếp tục tìm khóa k
trong nút con này.
7
Các phép toán
Phép duyệt
Duyệt các khóa của B-Cây theo thứ tự từ nhỏ đến lớn bằng phương pháp đệ qui
void traverse (NODEPTR proot)
{
int i;
if (proot == NULL) //dieu kien dung
return;
else //de qui
{
/*vong lap duyet nhanh cay con Branch[i] va in khoa key[i] cua node proot*/
for (i = 0; i < proot -> numtrees-1; i++)
{
traverse (proot -> Branch[i]);
printf (“%8d”, proot -> key[i]);
}
//duyet nhanh cay con cuoi cung cua node proot
traverse (proot -> Branch[proot -> numtrees-1]);
} 10
}
THANKS!
11