Почему поиск в дереве происходит за логарифмическое время
Python
Middle
Без компании
Почему поиск в дереве происходит за логарифмическое время
Ответы
Поиск в сбалансированном дереве (например, AVL или красно-черном) происходит за O(log n), потому что на каждом шаге алгоритм отсекает половину оставшихся элементов. Это возможно благодаря свойству бинарного дерева поиска (BST), где для каждого узла: левое поддерево содержит меньшие значения, правое — большие.
Пример для BST:
```
def search(root, key):
if root is None or root.val == key:
return root
if root.val < key:
return search(root.right, key)
return search(root.left, key)
```
Нюансы:
- Дерево должно быть сбалансированным — иначе вырождается в O(n) для вырожденного случая (цепочки узлов)
- Логарифмическая сложность достигается только при равномерном распределении элементов
- Основание логарифма зависит от степени ветвления (для бинарного log₂n)