1 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT BÀI THỰC HÀNH TUẦN 6 CÂY NHỊ PHÂN TÌM KIẾM Cây nhị phân tìm kiếm là cây có tính chất Các node có giá trị khóa nhỏ hơn khóa ở node gốc sẽ nằm ở cây con trái, các node c[.]
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT BÀI THỰC HÀNH TUẦN CÂY NHỊ PHÂN TÌM KIẾM Cây nhị phân tìm kiếm có tính chất: Các node có giá trị khóa nhỏ khóa node gốc nằm trái, node có giá trị khóa lớn giá trị khóa node gốc nằm bên phải Hình minh hoạ 1: Cây nhị phân tìm kiếm Số lượng node cực đại cấp ! 2# Số lượng node cực đại BST có độ sâu $ , % = 2' + 2) + 2* + ⋯ + 2,-) + 2, = 2# = 2,/) − ' Một BST gọi đầy đủ(full BST) node có khơng có Một BST gọi hoàn hảo (pefect BST) tất node có độ cao Một BST gọi Completed tất node cấp nhỏ cấp cuối có đủ cấp cuối node dồn phía bên trái CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Hình minh hoạ 2: Cây BST complete, độ sâu của cây 234* 12 + ≈ 3.7 Một Complete BST có n node có độ sâu là: $ = log (% + 1) Các thao tác thực BST: • Thêm node vào Input: Cây BST t, node a Output: Cây BST t với node a thêm vào Bước Bắt đầu từ node gốc t Bước Kiểm tra giá trị node có với giá trị t khơng, dừng trùng khóa Bước Nếu giá trị node nhỏ t, thì: 3.1 Nếu t khơng có trái thêm a vào trái t 3.2 Nếu t có trái gán t = trái t lặp lại bước Bước Nếu giá trị node lớn t, thì: 4.1 Nếu t khơng có phải thêm a vào thành phải t 4.2 Nếu t có phải gán t = phải t lặp lại bước • Xóa node cây: Có trường hợp xảy xóa node khỏi BST Trong ảnh minh họa bên dưới, node màu đỏ node bị xóa khỏi BST o Xóa node lá: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Hình minh hoạ 3: Xóa node lá o Xóa node có con: Hình minh họa 1: Tìm node con của node cần xóa (18 trong ví dụ này) sau đó xóa node 18 và thay bằng node con 21 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Hình minh họa 2: Kết quả sau khi xóa node 18 o Xóa node có đủ hai con: Đây trường hợp phức tạp việc xóa node khỏi BST Ta bắt đầu công việc việc tìm phần tử nhỏ phải thực thay phần tử bị xóa phần tử Cuối ta xóa phần tử thay Hình minh họa 3: Tìm phần tử thay thế Trong trường hợp này là node 19 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Hình minh họa 4: Thực hiện sao chép node thay thế và xóa node thay thế ở vị trí cũ • Duyệt theo Pre-order: Với chiến lược này, BST duyệt theo thứ tự: node gốc, trái, phải • Duyệt theo In-order: Với chiến lược này, BST duyệt theo thứ tự trái, node gốc, phải • Duyệt theo Post-Order: Với chiến lược này, BST duyệt theo thứ tự trái, phải, node gốc CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Bài tập nộp Moodle: Viết chương trình thực thao tác sau: a Định nghĩa cấu trúc BST với node giá trị nguyên b Thực thao tác thêm, xóa, duyệt Viết chương trình thực yêu cầu sau: a Đọc mảng số thực kiểu float từ tập tin văn chuyển thành nhị phân tìm kiếm Tập tin văn đầu vào có định dạng sau: Dịng chứa số N > số phần tử dãy Dòng chứa N số thực số cách khoảng trắng Ví dụ: 3.5 5.1 0.7 4.2 8.0.6.2 100.9 b Kiểm tra xem nhị phân tìm kiếm đọc từ file có “đầy đủ” không c Nếu BST không “đầy đủ” chuyển thành BST đầy đủ Xuất kết hình ... nhị phân tìm kiếm Tập tin văn đầu vào có định dạng sau: Dòng chứa số N > số phần tử dãy Dòng chứa N số thực số cách khoảng trắng Ví dụ: 3.5 5.1 0.7 4.2 8.0.6.2 100.9 b Kiểm tra xem nhị phân tìm. .. Hình minh hoạ 2: Cây BST complete, độ sâu của cây 234* 12 + ≈ 3.7 Một Complete BST có n node có độ sâu là: $ = log (% + 1) Các thao tác thực BST: • Thêm node vào Input: Cây BST t, node a Output: Cây BST... việc xóa node khỏi BST Ta bắt đầu cơng việc việc tìm phần tử nhỏ phải thực thay phần tử bị xóa phần tử Cuối ta xóa phần tử thay Hình minh họa 3: Tìm phần tử thay thế Trong trường hợp này là node 19