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 1: Chương 8

29 31 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 283,55 KB

Nội dung

Bài giảng Cấu trúc dữ liệu và giải thuật 1: Chương 8 trình bày các nội dung chính sau: Cây B-tree, cây nhiều nhánh tìm kiếm, thêm node mới, tách node,... Mời các bạn cùng tham khảo để nắm 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 ... 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À GIẢI THUẬT Khi thêm khóa vào B-Tree viết sau: if(Root... 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... khố lớn khoá key[count -1] CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cây nhiều nhánh tìm kiếm Cây nhiều nhánh tìm kiếm (Multiway Search Trees) bậc 5 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Định nghĩa B-tree Định

Ngày đăng: 23/09/2020, 14:21

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w