Изменения

Перейти к: навигация, поиск

Дерево поиска, наивная реализация

21 байт добавлено, 17:26, 10 июня 2012
Нет описания правки
=== Удаление ===
Для удаления узла из бинарного дерева поиска нужно рассмотреть три возможные ситуации. Если у узла нет дочерних узлов, то у его родителя нужно просто заменить указатель на null. Если у узла есть только один дочерний узел, то нужно создать новую связь между родителем удаляемого узла и его дочерним узлом. Наконец, если у узла два дочерних узла, то нужно найти следующий за ним элемент(у этого элемента не будет левого потомка) и переместить его на место удаляемого узла. Время работы алгоритма <tex>O(h)</tex>.
{| border="1" cellpadding="5" cellspacing="0"
!Случай
!Иллюстрация
|-
|'''Удаление листа'''
| [[Файл:Bst_del1.png‎png |581px]]
|-
|'''Удаление узла с одним дочерним узлом'''
| [[Файл:Bst_del2.png‎png |604px]]
|-
|'''Удаление узла с двумя дочерними узлами'''
| [[Файл:Bst_del3.png‎|900px]]
|-
|'''Удаление корня'''
| [[Файл:Bst_del4.png‎|581px]]
|}
'''delete'''(Node root, Node z) //корень дерева, удаляемый элемент
355
правок

Навигация