Из «Алгоритмов» Роберта Седжвика и Кевина Уэйна
Определение. Двоичное дерево поиска (BST) - это двоичное дерево, где каждый узел имеет сопоставимый ключ (и соответствующее значение) и удовлетворяет ограничению, заключающемуся в том, что ключ в любом узле больше, чем ключи во всех узлах в левом поддереве этого узла, и меньше, чем ключи во всех узлах в правом поддереве этого узла.
Предложение C. Для поиска совпадений в BST, построенном из N случайных ключей, требуется ~ 2 ln N (около 1,39 lg N) сравнивает, в среднем.
Доказательство: Количество сравнений, используемых для поиска, заканчивающегося в данном узле, равно 1 плюс глубина. Добавляя глубины всех узлов, мы получаем величину, известную как длина внутреннего пути дерева. Таким образом, искомая величина равна 1 плюс средняя длина внутреннего пути BST, которую мы можем проанализировать с помощью того же аргумента, который мы использовали для предложения K в разделе 2.3: Пусть CN - общая длина внутреннего пути BST, построенного из вставки N случайным образом упорядоченные отдельные ключи, так что средняя стоимость попадания поиска составляет 1 CN / N. У нас C0 = C1 = 0, а для N> 1 мы можем записать рекуррентное отношение, которое напрямую отражает рекурсивную структуру BST:
CN = N 1 (C0 CN1) / N + (C1 CN2) / N. , , (CN1 C0) / N
Член N 1 учитывает, что root вносит 1 в длину пути каждого из других N 1 узлов в дереве; остальная часть выражения учитывает поддеревья, которые с равной вероятностью могут быть любого из N размеров. После перестановки членов это повторение почти идентично тому, которое мы решили в разделе 2.3 для быстрой сортировки, и мы можем вывести приближение CN ~ 2N ln N
. Я также рекомендую вам проверить эту лекцию Mit Деревья бинарного поиска, BST Sort
Также проверьте главу 3.2 из книг Алгоритмы, в ней подробно описаны деревья бинарного поиска