X

Chuyên đề Tin 12 Kết nối tri thức

Hãy vẽ cây tìm kiếm nhị phân ứng với Dữ liệu tệp contacts.inp ở trong phần thực hành


Hãy vẽ cây tìm kiếm nhị phân ứng với

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

Luyện tập 1 trang 48 Chuyên đề Tin học 12: Hãy vẽ cây tìm kiếm nhị phân ứng với

a) Dữ liệu tệp contacts.inp ở trong phần thực hành.

b) Từ cây nhận được ở ý a, thêm liên hệ “Anh, Nguyễn Văn Tùng, 0982 000 134”.

Lời giải:

a) Dữ liệu tệp contacts.inp ở trong phần thực hành.

Hãy vẽ cây tìm kiếm nhị phân ứng với Dữ liệu tệp contacts.inp ở trong phần thực hành

b) Từ cây nhận được ở ý a, thêm liên hệ “Anh, Nguyễn Văn Tùng, 0982 000 134”.

Hãy vẽ cây tìm kiếm nhị phân ứng với Dữ liệu tệp contacts.inp ở trong phần thực hành

Để vẽ cây tìm kiếm nhị phân ứng với dữ liệu từ tệp contacts.inp, chúng ta cần đọc dữ liệu từ tệp và thêm các liên hệ vào cây tương ứng. Sau đó, chúng ta có thể vẽ cây đó.

Dưới đây là một phác thảo Python cho cách thực hiện điều này:

class Contact:

    def __init__(self, name, phone_number):

        self.name = name

        self.phone_number = phone_number

class TreeNode:

    def __init__(self, contact):

        self.contact = contact

        self.left = None

        self.right = None

class PhoneBook:

    def __init__(self):

        self.root = None

    def insert(self, contact):

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

    def _insert_recursive(self, root, contact):

        if root is None:

            return TreeNode(contact)

        if contact.name < root.contact.name:

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

        elif contact.name > root.contact.name:

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

        return root

    def display_contacts(self):

        self._in_order_traversal(self.root)

    def _in_order_traversal(self, root):

        if root:

            self._in_order_traversal(root.left)

            print("Name:", root.contact.name, "- Phone:", root.contact.phone_number)

           self._in_order_traversal(root.right)

# Đọc dữ liệu từ tệp contacts.inp và thêm liên hệ vào danh bạ điện thoại

phone_book = PhoneBook()

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

    for line in file:

        parts = line.strip().split(", ")

        name = parts[0]

        phone_number = parts[1]

        phone_book.insert(Contact(name, phone_number))

# Hiển thị toàn bộ danh sách liên hệ trước khi thêm liên hệ mới

print("Contacts before adding new contact:")

phone_book.display_contacts()

# Thêm liên hệ mới

new_contact = Contact("Anh, Nguyễn Văn Tùng", "0982 000 134")

phone_book.insert(new_contact)

# Hiển thị toàn bộ danh sách liên hệ sau khi thêm liên hệ mới

print("\nContacts after adding new contact:")

phone_book.display_contacts()

* Lưu ý thêm:

Sau khi chạy mã này, chúng ta sẽ có cây tìm kiếm nhị phân chứa tất cả các liên hệ từ tệp contacts.inp, và sau đó sẽ thêm một liên hệ mới vào cây. Tuy nhiên, để vẽ cây như bạn yêu cầu, chúng ta cần một số thư viện hỗ trợ vẽ đồ thị. Bạn có thể sử dụng thư viện như matplotlib hoặc graphviz để vẽ cây

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: