1. Определение узла дерева:
```python
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
```
2. Обход дерева (in-order):
```python
def inorder(node):
if node:
inorder(node.left)
print(node.value)
inorder(node.right)
```
3. Вставка в бинарное дерево поиска:
```python
def insert(root, value):
if not root:
return Node(value)
if value < root.value:
root.left = insert(root.left, value)
else:
root.right = insert(root.right, value)
return root
```
1. Реализуйте структуру бинарного дерева поиска.
2. Реализуйте функции для обхода дерева: in-order, pre-order, post-order.
3. Добавьте функцию поиска значения в дереве.
4. Напишите функцию, которая считает количество всех узлов дерева.
1. Напишите функцию, находящую максимальное значение в бинарном дереве.
2. Реализуйте функцию, считающую высоту дерева.
3. Создайте функцию, проверяющую, является ли дерево сбалансированным.
4. Визуализируйте дерево в консоли с отступами по уровням.
1. Что такое корень дерева, лист и поддерево?
2. Что такое бинарное дерево поиска?
3. Чем отличается in-order от pre-order обхода?
4. Какова сложность поиска в сбалансированном бинарном дереве?
5. Какие есть применения деревьев в реальных задачах?