Câu hỏi:

01/10/2024 244

Cho cây tìm kiếm nhị phân như Hình 9. Em hãy thực hiện:

Media VietJack

a) Mô tả các bước để tìm giá trị x = 22 có trong cây theo các thuật toán: duyệt trước, duyệt giữa, duyệt sau và tìm kiếm trên cây tìm kiếm nhị phân.

b) Với các thuật toán ở câu a), trong trường hợp tổng quát của cây tìm kiếm nhị phần, thuật toán nào có số lần so sánh khóa cần tìm với khóa của các nút là ít nhất.

c) Viết chương trình tạo cây tìm kiếm nhị phân ở Hình 9. Sau đó, in ra màn hình các khóa có trong cây này theo thứ tự tăng dần.

Sale Tết giảm 50% 2k7: Bộ 20 đề minh họa Toán, Lí, Hóa, Văn, Sử, Địa…. form chuẩn 2025 của Bộ giáo dục (chỉ từ 49k/cuốn).

20 đề Toán 20 đề Văn Các môn khác

Quảng cáo

Trả lời:

verified
Giải bởi Vietjack

a) Để tìm giá trị x = 22 trong cây tìm kiếm nhị phân, bạn có thể thực hiện theo các bước sau:

- Duyệt trước: Bắt đầu từ nút gốc (25), duyệt qua nút gốc, sau đó là cây con bên trái (bắt đầu từ 15), và cuối cùng là cây con bên phải (bắt đầu từ 50). Tiếp tục cho đến khi tìm thấy x = 22 hoặc đã duyệt qua tất cả các nút.

- Duyệt giữa: Duyệt cây con bên trái (bắt đầu từ 15), sau đó là nút gốc (25), và cuối cùng là cây con bên phải (bắt đầu từ 50). Phương pháp này sẽ tìm thấy x = 22 sau khi kiểm tra tất cả các giá trị nhỏ hơn.

- Duyệt sau: Duyệt cây con bên trái (bắt đầu từ 15), sau đó là cây con bên phải (bắt đầu từ 50), và cuối cùng là nút gốc (25). Phương pháp này sẽ tìm thấy x = 22 sau khi khám phá tất cả các nút con.

- Tìm kiếm nhị phân: Bắt đầu từ nút gốc (25). Vì x = 22 nhỏ hơn 25, chuyển sang nút con bên trái (15). Vì x = 22 lớn hơn 15, chuyển sang nút con bên phải (20). Vì không có nút con bên phải cho nút có giá trị ‘20’, kết luận rằng x = 22 không tồn tại trong cây tìm kiếm nhị phân này.

b) Trong trường hợp tổng quát của cây tìm kiếm nhị phân, thuật toán tìm kiếm nhị phân thường có số lần so sánh ít nhất vì nó hệ thống hóa việc thu hẹp vị trí có thể có bằng cách so sánh ở mỗi cấp độ.

c) Chương trình tạo cây tìm kiếm nhị phân ở Hình 9. Sau đó, in ra màn hình các khóa có trong cây này theo thứ tự tăng dần.ưới đây là mã chương trình để tạo cây tìm kiếm nhị phân như trong Hình 9 và in ra các khóa theo thứ tự tăng dần:

class Node:

    def __init__(self, key):

       self.left = None

       self.right = None

        self.val = key

def insert(root, key):

    if root is None:

        return Node(key)

    else:

        if root.val < key:

           root.right = insert(root.right, key)

        else:

           root.left = insert(root.left, key)

    return root

def inorder_traversal(root):

    if root:

       inorder_traversal(root.left)

       print(root.val, end=' ')

       inorder_traversal(root.right)

# Tạo cây tìm kiếm nhị phân từ các giá trị trong Hình 9

values = [25, 15, 50, 10, 20, 35, 70, 12, 18, 24, 31, 44, 66, 90]

root = Node(values[0])

for value in values[1:]:

    insert(root, value)

# In các khóa theo thứ tự tăng dần

inorder_traversal(root)

 


CÂU HỎI HOT CÙNG CHỦ ĐỀ

Câu 1:

Em hãy vẽ cây tìm kiếm nhị phân bằng cách đưa vào cây rỗng lần lượt các phần tử của mảng A = [3, 6, 13, 7, 5, 2, 8, 9].

Xem đáp án » 01/10/2024 226

Câu 2:

Cho mảng A = [5, 7, 30, 23, 34, 15]. Hãy vẽ cây tìm kiếm nhị phân biểu diễn mảng A.

Xem đáp án » 01/10/2024 84

Câu 3:

Cho tập hợp A gồm các số nguyên dương A = (6, 14, 10, 34, 40, 30, 46, 20, 24, 22} được lưu trữ bằng hai cách sau:

Media VietJack

Cách 1: Lưu vào mảng một chiều.

Media VietJack

Cho giá trị x = 20. Em hãy trình bày:

a) Cách tìm kiếm x trong mảng A.

b) Cách tìm kiếm x trong cây nhị phân.

Xem đáp án » 01/10/2024 73

Câu 4:

Hình nào trong Hình 3 biểu diễn cây tìm kiếm nhị phân?

Media VietJack

 

Xem đáp án » 01/10/2024 61

Câu 5:

Trình bày thuật toán xác định giá trị * = 34 có thuộc cây tìm kiếm nhị phân được biểu diễn ở Hình 4b hay không.

Xem đáp án » 01/10/2024 60

Bình luận


Bình luận