(1) Двоичные деревья поиска: среднее lgN, наихудшее N для вставки и поиска.
Свойства: ключ в любом узле больше, чем ключи во всех узлах левого поддерева этого узла и меньше, чем ключи во всех узлах правого поддерева этого узла. Растет сверху вниз.
По сравнению с бинарным поиском:
Общие операции:
(2) Сбалансированные деревья поиска
(a) 2-3 дерева поиска: гарантируется не более lgN посещений узлов для поиска и вставки.
Узел либо пуст, либо имеет 2 дочерних узла (1 ключ), либо 3 дочерних узла (2 ключа). Растет снизу вверх (см. точку вставки 4).
Идеально сбалансированное дерево поиска 2-3 def: все нулевые ссылки находятся на одинаковом расстоянии от корня.
Вставка (локальное преобразование, не затрагивающее другие узлы, и сохраняющее идеально сбалансированное глобальное свойство):
(b) Красно-черный BST
Обратите внимание, что это внутренняя структура данных, используемая Java TreeMap (PriorityQueue - это куча).
Основная идея: кодировать 2-3 дерева, начиная со стандартных BST. Красные ссылки: связывают 2-узлы в 3-узлы; черные ссылки: связывают дерево.
Свойства: высота ≤ 2lgN, средняя длина пути lgN. Все операции, упомянутые выше для BST, занимают lgN времени в худшем случае (floor, deleteMax, rangeCount...).
Допущения:
Операции: поворот влево: переключение с меньшего из двух ключей в корне на больший из двух ключей в корне (два ключа связаны красной ссылкой).
Вставка:
Вставки точно такие же, как и в дереве 2-3.
Удаление (P441) пропущено.
20.03.2023 12:24
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие действия:
20.03.2023 08:46
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
19.03.2023 13:43
Установщик веб-платформы, предлагаемый компанией Microsoft, перестанет работать 31 декабря 2022 года. Его закрытие привело к тому, что мы не можем запускать наши php-файлы через localhost на наших компьютерах. Мне с трудом удалось установить его и я решил поделиться этой статьей, чтобы помочь тем,...
19.03.2023 13:03
При использовании компонентов React в сочетании с Context вы можете оптимизировать рендеринг, обернув ваш компонент React в React.memo сразу после поставщика контекста. Это позволит избежать ненужных повторных рендеров.
19.03.2023 11:50
Лично я попрощался с операторами print() в python. Без шуток.
19.03.2023 06:15
Я пишу эту статью, чтобы поделиться тем, как настроить макет Metronic с помощью Sass, поскольку Metronic предоставляет так много документации, и они постоянно обновляют версию (а нам нужно быстро наверстать упущенное!).