1. Trang chủ
  2. » Tất cả

Cây nhị phân tìm kiếm week6 bst

6 2 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Cây Nhị Phân Tìm Kiếm
Trường học Đại học Công Nghệ Thông Tin - Đại học Quốc Gia TP HCM
Chuyên ngành Khoa Học Máy Tính
Thể loại Bài Thực Hành
Định dạng
Số trang 6
Dung lượng 349,37 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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[.]

Trang 1

Hình minh hoạ 1: Cây nhị phân tìm kiếm

1 Số lượng node cực đại ở cấp ! là 2#

2 Số lượng node cực đại của một cây BST có độ sâu $ là

% = 2'+ 2)+ 2*+ ⋯ + 2,-)+ 2, = 2# = 2,/)− 1

,

'

3 Một cây BST được gọi là đầy đủ(full BST) khi mỗi node trên nó có đúng 2 cây con hoặc không có cây con nào

4 Một cây BST được gọi là hoàn hảo (pefect BST) khi tất cả node lá trong cây có cùng độ cao

5 Một cây BST được gọi là Completed khi tất cả các node ở các cấp nhỏ hơn cấp cuối cùng đều có đủ 2 con và tại cấp cuối cùng các node lá được dồn

về phía bên trái

Trang 2

2

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 + 1 ≈ 3.7

Một cây Complete BST có n node thì sẽ có độ sâu là:

$ = log (% + 1) Các thao tác thực hiện trên cây BST:

Input: Cây BST t, node mới a

Output: Cây BST t với node a được thêm vào

Bước 1 Bắt đầu từ node gốc t

Bước 2 Kiểm tra giá trị node mới có bằng với giá trị tại t không, nếu bằng thì dừng do trùng khóa

Bước 3 Nếu giá trị node mới nhỏ hơn t, thì:

3.1 Nếu t không có cây con trái thì thêm a vào cây con trái của t 3.2 Nếu t có cây con trái thì gán t = cây con trái của t và lặp lại bước 2

Bước 4 Nếu giá trị node mới lớn hơn t, thì:

4.1 Nếu t không có cây con phải thì thêm a vào thành cây con phải của t

4.2 Nếu t có cây con phải thì gán t = cây con phải của t và lặp lại bước 2

khỏi cây BST Trong các ảnh minh họa bên dưới, các node màu đỏ là node sẽ bị xóa ra khỏi cây BST

o Xóa node lá:

Trang 3

Hình minh hoạ 3: Xóa node lá

o Xóa node có một 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

Trang 4

4

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 cây con: Đây là trường hợp phức tạp nhất trong việc xóa node ra khỏi cây BST Ta sẽ bắt đầu công việc này bằng việc tìm phần tử nhỏ nhất của cây con phải và thực hiện thay thế phần tử bị xóa bằng phần tử này Cuối cùng ta xóa phần

tử thay thế

Hình minh họa 3: Tìm phần tử thay thế Trong trường hợp này là node 19

Trang 5

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ũ

tự: node gốc, cây con trái, cây con phải

cây con trái, node gốc, cây con phải

thứ tự cây con trái, cây con phải, node gốc

Trang 6

6

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

1 Viết chương trình thực hiện các thao tác sau:

a Định nghĩa cấu trúc cây BST với các node là các giá trị nguyên

b Thực hiện các thao tác thêm, xóa, duyệt cây

2 Viết chương trình thực hiện các yêu cầu sau:

a Đọc một mảng các số thực kiểu float từ tập tin văn bản và chuyển thành cây nhị phân tìm kiếm Tập tin văn bản đầu vào có định dạng như sau:

Dòng đầu tiên chứa số N > 0 là số phần tử trong dãy

Dòng kế tiếp chứa N số thực mỗi số cách nhau một khoảng trắng

Ví dụ:

7 3.5 5.1 0.7 4.2 8.0.6.2 100.9

b Kiểm tra xem cây nhị phân tìm kiếm đọc từ file ở trên có “đầy đủ” không

c Nếu cây BST ở trên không “đầy đủ” thì chuyển nó thành cây BST đầy đủ Xuất kết quả ra màn hình

Ngày đăng: 25/03/2023, 13:08

🧩 Sản phẩm bạn có thể quan tâm