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