• Предмет: Информатика
  • Автор: nataaremus
  • Вопрос задан 2 месяца назад

Срочно даю 100 б

Створити клас для роботи з бінарним деревом, що містить англо-український словник.
Кожен вузол містить лічильник звернень до слова в даному вузлі.
В процесі експлуатації словника при кожному виклику слова в лічильник звернень додається одиниця. Написати програму, яка:
• забезпечує початкове введення словника з конкретними значеннями лічильника звернень;
• дозволяє відобразити слово і його переклад;
• дозволяє додати, замінити, видалити переклад слова;
• виводить на екран топ-3 найпопулярніших слів (визначаємо популярність на підставі лічильника звернень);
• виводить на екран топ-3 найбільш непопулярних слів (визначаємо непопулярність на підставі
лічильника звернень).
Та намалювати бінарне дерево

Ответы

Ответ дал: vitalikkuacom
0

Щоб створити клас для роботи з бінарним деревом, що містить англо-український словник, який задовольняє ваші вимоги, можна використати мову програмування Python. Нижче наведено простий приклад класу, який можна використовувати для цієї задачі:

python

Copy code

class TreeNode:

   def __init__(self, key, value):

       self.key = key

       self.value = value

       self.counter = 0

       self.left = None

       self.right = None

class BinaryTreeDictionary:

   def __init__(self):

       self.root = None

   def insert(self, key, value):

       self.root = self._insert(self.root, key, value)

   def _insert(self, root, key, value):

       if root is None:

           return TreeNode(key, value)

       if key < root.key:

           root.left = self._insert(root.left, key, value)

       elif key > root.key:

           root.right = self._insert(root.right, key, value)

       else:

           root.value = value

       return root

   def search(self, key):

       return self._search(self.root, key)

   def _search(self, root, key):

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

           if root:

               root.counter += 1

           return root

       if key < root.key:

           return self._search(root.left, key)

       return self._search(root.right, key)

   def display_top_words(self, top_count, ascending=True):

       words = []

       self._inorder_traversal(self.root, words)

       sorted_words = sorted(words, key=lambda x: x.counter, reverse=not ascending)

       return sorted_words[:top_count]

   def _inorder_traversal(self, root, words):

       if root:

           self._inorder_traversal(root.left, words)

           words.append(root)

           self._inorder_traversal(root.right, words)

# Приклад використання

tree_dict = BinaryTreeDictionary()

# Додавання слова з перекладом та визначенням лічильника звернень

tree_dict.insert("hello", "привіт")

tree_dict.insert("world", "світ")

tree_dict.insert("python", "пайтон")

# Пошук та виведення слова з перекладом

result = tree_dict.search("hello")

if result:

   print(f"{result.key}: {result.value}")

# Додавання, заміна, видалення перекладу слова

tree_dict.insert("hello", "Привіт")

tree_dict.insert("tree", "дерево")

tree_dict.insert("apple", "яблуко")

tree_dict.insert("python", "Пайтон")

# Виведення топ-3 найпопулярніших та найменш популярних слів

top_popular = tree_dict.display_top_words(3)

top_unpopular = tree_dict.display_top_words(3, ascending=False)

print("Топ-3 найпопулярніших слів:")

for word in top_popular:

   print(f"{word.key}: {word.counter} звернень")

print("\nТоп-3 найменш популярних слів:")

for word in top_unpopular:

   print(f"{word.key}: {word.counter} звернень")

Цей код створює клас TreeNode для представлення вузла бінарного дерева, який містить слово, його переклад і лічильник звернень. Клас BinaryTreeDictionary надає методи для вставки, пошуку, виведення топ-слів і т. д.

Вас заинтересует