1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 8 - Trường ĐH Công nghệ Thông tin

29 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 350,36 KB

Nội dung

Tiếp tục chương 7, Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 8 có nội dung về Cây B-tree. Định nhĩa cây B-tree, khai báo, các phép toán, câu hỏi và bài tập về cây B-tree. Kính mời quý đọc giả tham khảo nội dung chi tiết.

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT CÂY B-TREE CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Giới thiệu  Cây cách tiếp cận hoàn chỉnh để tổ chức liệu nhớ Vậy làm việc tốt với hệ thống tập tin hay không?  B-tree cấu trúc liệu phù hợp cho việc lưu trữ R.Bayer E.M.McCreight đưa năm 1972 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cây nhiều nhánh tìm kiếm Một nhiều nhánh bậc m mà node có nhiều m Gọi count (count Branch[1] = right_half; } 22 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Tách node Tách node đầy (current) current nút đầy bị tách, sau tách xong nút current lại nửa số khóa bên trái extra_entry, extra_branch position khóa mới, nhánh vị trí chèn vào nút current Nút right_half nút nửa phải có sau lần tách, nút right_half chiếm nửa số khóa bên phải Median khóa sẻ chèn vào nút cha 23 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Tách node void split (pBNode current, int extra_entry, pBNode extra_branch, int position, pBNode &right_half,Pint &median) { pBNode p; p = new pBNode; if(position > Order/2) { copy(current, Order/2+1, Order – 2, p); insnode (P , extra_entry, extra_branch, position- Order/2 -1); current->numtrees = Order/2+1; median = current -> key[Order/2]; right_half = p ; return; } 24 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Tách node if (position == Order/2){ copy(current, Order/2, Order-2, p); current->numtrees = Order/2+1; current -> Branch[0] = extra_branch; median = current -> key[Order/2]; right_half = p; return; } if (position < Order/2){ copy(current, Order/2, Order-2, p); current->numtrees = Order/2; median = current -> key[Order/2- 1]; insnode(current, extra_entry, extra_branch, right_half = p; return; } } 25 position); CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Thêm vào node void insnode (pBNode current, int extra_entry, pBNode extra_branch, int position) { int i; for(i = current->count; i >= position+1; i ){ current -> Branch[i+1] = current -> Branch[i]; current -> key[i] = current -> key[i - 1]; } current -> key[position] = extra_entry; current -> Branch[position + 1] = extra_branch; current -> count +=1; } 26 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Loại bỏ 27 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Loại bỏ 28 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Câu hỏi Bài tập Nêu định nghĩa tính chất B-Tree Cài đặt tất thao B-Tree Cho B-tree bậc gồm khóa sau (chèn vào theo thứ tự): 3, 7, 9, 23, 45, 1, 5, 14, 25, 24, 13, 11, 8, 19, 4, 31, 35, 56 Thực yêu cầu sau: - Thêm khóa: 2, 6,12 - Xóa khóa: 4, 5, 7, 3, 14 Khởi tạo B Tree bậc với thao tác Insert: 34, 12, 55, 21, 6, 84, 5, 33, 15, 74, 54, 28, 10, 19 Thực chuỗi thao tác sau: - Insert(11), Delete(15), Delete(6), Insert(98), Delete(34), Delete(5) 29 ... current -> count +=1; } 26 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Loại bỏ 27 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Loại bỏ 28 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Câu hỏi Bài tập Nêu định nghĩa tính chất B-Tree Cài... Trong trường hợp node gốc bị đầy, node gốc bị tách dẫn đến việc tăng trưởng chiều cao 16 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 17 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Thêm node 18 Thêm node CẤU TRÚC DỮ LIỆU VÀ... node lá) CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Định nghĩa B-tree B-tree bậc có mức CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Khai báo Khai báo: typedef struct { int count; // số khoá node hành int Key[Order-1];//

Ngày đăng: 17/04/2022, 10:55

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN