Sử dụng cây tìm kiếm nhị phân để hiển thị các món trong tệp menu.inp ở Bài 8

Giải Chuyên đề Tin 12 Bài 10: Thực hành tổng hợp với cây tìm kiếm nhị phân - Kết nối tri thức

Vận dụng 2 trang 48 Chuyên đề Tin học 12: Sử dụng cây tìm kiếm nhị phân để hiển thị các món trong tệp menu.inp ở Bài 8 theo thứ tự giá tiền tăng dần. Mỗi dòng in ra gồm tên món và giá tiền. Nếu có hai hoặc nhiều món cùng giá tiền thì các món đó được hiển thị theo thứ tự xuất hiện trong tệp menu.inp.u

Quảng cáo
Cài đặt app vietjack

Lời giải:

Để hiển thị các món trong tệp menu.inp theo thứ tự giá tiền tăng dần bằng cây tìm kiếm nhị phân, chúng ta cần đọc dữ liệu từ tệp, sau đó chèn mỗi món vào cây tìm kiếm nhị phân dựa trên giá tiền của món. Nếu có nhiều món có cùng giá tiền, chúng ta có thể sử dụng danh sách liên kết hoặc danh sách kết hợp để lưu trữ các món có cùng giá tiền. Dưới đây là một cách để thực hiện điều này:

class MenuItem:

    def __init__(self, name, price):

        self.name = name

        self.price = price

class TreeNode:

    def __init__(self, menu_item):

        self.menu_item = menu_item

        self.left = None

        self.right = None

        self.same_price = []  # Danh sách các món có cùng giá tiền

class MenuDatabase:

    def __init__(self):

        self.root = None

    def insert(self, menu_item):

        self.root = self._insert_recursive(self.root, menu_item)

    def _insert_recursive(self, root, menu_item):

        if root is None:

            return TreeNode(menu_item)

        if menu_item.price < root.menu_item.price:

            root.left = self._insert_recursive(root.left, menu_item)

        elif menu_item.price > root.menu_item.price:

            root.right = self._insert_recursive(root.right, menu_item)

        else:

            root.same_price.append(menu_item)

        return root

    def display_menu_by_price(self, root):

        if root:

           self.display_menu_by_price(root.left)

            print("Name:", root.menu_item.name, "- Price:", root.menu_item.price)

            for item in root.same_price:

                print("Name:", item.name, "- Price:", item.price)

           self.display_menu_by_price(root.right)

# Đọc dữ liệu từ tệp menu.inp và chèn mỗi món vào cây tìm kiếm nhị phân

menu_db = MenuDatabase()

with open("menu.inp", "r") as file:

    for line in file:

        name, price = line.strip().split(", ")

        menu_item = MenuItem(name, float(price))

        menu_db.insert(menu_item)

# In danh sách món theo thứ tự giá tiền tăng dần

print("Menu sorted by price (ascending):")

menu_db.display_menu_by_price(menu_db.root)

Quảng cáo

Lời giải bài tập Chuyên đề Tin 12 Bài 10: Thực hành tổng hợp với cây tìm 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:

ĐỀ 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