Bài tập  /  Bài đang cần trả lời

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?

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?

1 trả lời
Hỏi chi tiết
22
0
0
Đặng Bảo Trâm
11/09 12:02:26

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.

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm
Bài tập liên quan
Bài tập Tin học Lớp 12 mới nhất

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường

Học ngoại ngữ với Flashcard

×
Trợ lý ảo Trợ lý ảo
×
Đấu trường tri thức | Lazi Quiz Challenge +500k