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
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)
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:
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:
Chuyên đề Tin học 12 Bài 14: Kĩ thuật duyệt đồ thị theo chiều sâu
Chuyên đề Tin học 12 Bài 15: Thực hành duyệt đồ thị theo chiều sâu
Xem thêm các tài liệu học tốt lớp 12 hay khác:
- Giải Chuyên đề Tin học 12 Kết nối tri thức
- Giải Chuyên đề Tin học 12 Chân trời sáng tạo
- Giải Chuyên đề Tin học 12 Cánh diều
TÀI LIỆU CLC DÀNH CHO GIÁO VIÊN VÀ PHỤ HUYNH LỚP 12
Bộ giáo án, bài giảng powerpoint, đề thi file word có đáp án 2026 tại https://tailieugiaovien.com.vn/
Hỗ trợ zalo: VietJack Official
Tổng đài hỗ trợ đăng ký: 084 283 45 85
Công cụ giáo viên (2048.VN)
Tạo- trộn đề thi miễn phí từ file PDF, Word, Giao bài nhanh chóng, Hoàn toàn Free
- Soạn văn 12 (hay nhất)
- Soạn văn 12 (ngắn nhất)
- Soạn văn 12 (siêu ngắn)
- Giải sgk Toán 12
- Giải Tiếng Anh 12 Global Success
- Giải sgk Vật Lí 12
- Giải sgk Hóa học 12
- Giải sgk Sinh học 12
- Giải sgk Lịch Sử 12
- Giải sgk Địa Lí 12
- Giải sgk Giáo dục KTPL 12
- Giải sgk Tin học 12
- Giải sgk Công nghệ 12
- Giải sgk Hoạt động trải nghiệm 12
- Giải sgk Giáo dục quốc phòng 12
- Giải sgk Âm nhạc 12
- Giải sgk Mĩ thuật 12

