Trong Bài 7, cây tìm tìm kiếm nhị phân được cài đặt bằng mảng một chiều

Giải Chuyên đề Tin 12 Bài 8: Thực hành cây tim kiếm nhị phân - Kết nối tri thức

Khởi động trang 37 Chuyên đề Tin học 12: Trong Bài 7, cây tìm tìm kiếm nhị phân được cài đặt bằng mảng một chiều và mỗi nút của cây có khoá là một thuộc tính. Trong thực tế, một đối tượng có thể có nhiều thuộc tính. Ví dụ, với bài toán quản lí các món trong thực đơn, mỗi món có hai thuộc tính là tên và giá tiền. Trong trường hợp này, cây tìm kiếm nhị phân biểu diễn danh sách các món được cài đặt bằng mảng như thế nào và làm thế nào để mỗi nút của cây chứa hai thuộc tính là tên và giá tiền?

Quảng cáo

Lời giải:

Trong trường hợp mỗi nút của cây tìm kiếm nhị phân cần chứa nhiều hơn một thuộc tính, có thể sử dụng một lớp đại diện cho nút của cây, và mỗi đối tượng của lớp này sẽ chứa các thuộc tính tương ứng với mỗi nút.

Dưới đây là một cách để triển khai sử dụng lớp để đại diện cho nút của cây tìm kiếm nhị phân trong trường hợp mỗi nút chứa hai thuộc tính là tên và giá tiền của món ăn:

class MenuItem:

    def __init__(self, name, price):

        self.name = name

        self.price = price

        self.left = None

        self.right = None

def insert(root, name, price):

    if root is None:

        return MenuItem(name, price)

    if name < root.name:

        root.left = insert(root.left, name, price)

    elif name > root.name:

        root.right = insert(root.right, name, price)

    return root

def search(root, name):

    if root is None or root.name == name:

        return root

    if name < root.name:

        return search(root.left, name)

    return search(root.right, name)

# Ví dụ minh họa

root = None

root = insert(root, "Pho", 35)

root = insert(root, "Banh Mi", 25)

root = insert(root, "Bun Cha", 40)

# Tìm kiếm một món trong cây

search_result = search(root, "Pho")

if search_result:

    print(f"Tên món: {search_result.name}, Giá: {search_result.price}")

else:

    print("Không tìm thấy món.")

search_result = search(root, "Banh Xeo")

if search_result:

    print(f"Tên món: {search_result.name}, Giá: {search_result.price}")

else:

    print("Không tìm thấy món.")

Chú thích trong mã này:

- Lớp MenuItem đại diện cho nút của cây, mỗi đối tượng của lớp này chứa hai thuộc tính là tên và giá tiền của món ăn, cũng như hai con trỏ left và right để tham chiếu đến các nút con bên trái và bên phải.

- Hàm insert được sử dụng để chèn một món ăn mới vào cây tìm kiếm nhị phân.

- Hàm search được sử dụng để tìm kiếm một món ăn trong cây tìm kiếm nhị phân.

Quảng cáo

Lời giải bài tập Chuyên đề Tin 12 Bài 8: Thực hành cây tim kiếm nhị phân hay, ngắn gọn khác:

Quảng cáo

Xem thêm lời giải bài tập Chuyên đề học tập Tin học 12 Kết nối tri thức hay, ngắn gọn khác:

Xem thêm các tài liệu học tốt lớp 12 hay khác:

Săn shopee giá ưu đãi :

ĐỀ THI, GIÁO ÁN, GÓI THI ONLINE DÀNH CHO GIÁO VIÊN VÀ PHỤ HUYNH LỚP 12

Bộ giáo án, đề thi, bài giảng powerpoint, khóa học dành cho các thầy cô và học sinh lớp 12, đẩy đủ các bộ sách cánh diều, kết nối tri thức, chân trời sáng tạo tại https://tailieugiaovien.com.vn/ . Hỗ trợ zalo VietJack Official


Giải bài tập lớp 12 sách mới các môn học
Tài liệu giáo viên