Tìm kiếm một phần tử trên B-cây

Một phần của tài liệu GIÁO TRÌNH CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 2 (Trang 27)

* Ví dụ: Xét B - cây cấp 2 lưu trữ các số nguyên trong ví dụ trên đây. Giả sử ta cần tìm phần tử 22 có trong cây hay không ? So sánh với nút gốc ta thấy 22 < 25, ta tìm 22 trong nhánh con bên trái của nút 25:

10 20 2 5 7 8 13 14 15 18 22 24 Ta lại so sánh 22 với các phần tử trong nút gốc của cây mới, ta thấy 22 > 20, ta sẽ tìm trong nhánh con phải của phần tử 20: 22 24

Trong việc ứng dụng cài đặt lưu trữ B- cây, mỗi trang sẽđược lưu trữ trên bộ nhớ thứ cấp như một khối file (một lượng thông tin lớn nhất có thể nạp vào bộ

nhớ trong ở một lần truy nhập). Mỗi khi cần tìm kiếm, một trang nào đó sẽ được nạp vào bộ nhớ trong, phần còn lại của cây vẫn nằm lại trên bộ nhớ thứ cấp.

e

p0 k1 p1 k2 p2 k3 ... pm-1 km pm

(Trang chứa các (Trang chứa các (Trang chứa các phần tử < k1) phần tử > k1 và < k2) phần tử > km)

Giả sử trang trên đã được nạp vào bộ nhớ trong. Trước hết, tìm x trong dãy khoá k1, k2,..., km (Nếu m lớn thì tìm theo phương pháp nhị phân). Nếu thấy, việc tìm kết thúc. Nếu không tìm thấy (x ≠ ki, ∀ i=1..m) thì ta sẽ gặp một trong các tình huống sau :

+ ki < x < ki+1 với 1 ≤ i ≤ m-1 : tiếp tục tìm trên trang có địa chỉ do con trỏ pi chỉđến.

+ km < x : tiếp tục tìm trên trang do pm trỏ đến. + x < k1 : tiếp tục tìm trên trang do p0 trỏ đến.

Trong trường hợp nếu có con trỏ pi nào đó chỉ đến NULL, nghĩa là không còn trang con nữa thì trong B - cây không có phần tử có khoá x, việc tìm kiếm chấm dứt.

Định nghĩa cu trúc trang

nguyen n = ..., // cấp của B-cây

nn = 2*n; // kích thước tối đa của một trang typedef … KeyType; // Kiểu dữ liệu của khóa

typedef Page *Ref ; // địa chỉ của trang struct Item { KeyType Key; // khóa

Ref p; // chứa địa chỉđến trang con bên phải của khóa InfoType Info; // đại diện cho các dữ liệu còn lại

}; // phần tử của trang

struct Page { nguyên m;// số phần tử của trang

Ref p0; // địa chỉ trang con có các khoá < e1.key Item *e; // các phần tử của trang

}; // trang

Một phần của tài liệu GIÁO TRÌNH CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 2 (Trang 27)

Tải bản đầy đủ (PDF)

(54 trang)