

24. Добавление элемента в двоичном дереве поиска.
Добавление элемента Алгоритм:
Если дерево пусто, заменить его на дерево с одним корневым узлом (K, ПУСТО, ПУСТО) и остановиться.
Иначе сравнить K с ключом корневого узла X.:
1.Если K>=X, рекурсивно добавить (K,V) в правое поддерево Т.
2.Если K<X, рекурсивно добавить (K,V) в левое поддерево Т.
Алгоритм InsertTree (T, k) //k – добавляемое значение
1.if T=nil
2.New (T)
3.T^.key←k
4.T^.left←nil
5.T^.right←nil
6.else
7.if (k<T^.key) then InsertTree (T^.left, k)
8.else InsrtTree (T^.right, k)
9.end if
10.end if
11.return T
Вычислительная сложность.
Средний вариант – O(log n), худший случай – O(n).
Рассмотрим вставку узла 8 в дерево BinSTree_1. Начав с корневого узла 25, определяем, что узел 8 должен быть в левом поддереве узла 25 (8<25). В узле 10 определяем, что место узла 8 должно быть в левом поддереве узла 10, которое в данный момент пусто. Узел 8 вставляется в дерево в качестве левого сына узла
10.