Мы все знаем, что есть много самоустанавливающихся двоичных деревьев поиска (BST), которые являются самыми известными Red-Black и AVL. Возможно, было бы полезно взглянуть на деревья AA и деревья козлов отпущения.Двоичное дерево поиска для определенного намерения
Я хочу сделать удаление и поиск, как и любой другой BST. Тем не менее, будет принято удалять все значения в заданном диапазоне или удалять целые поддеревья. Итак:
- Я хочу вставлять, искать, удалять значения в O (log n) (сбалансированное дерево).
- Я хотел бы удалить поддерево, сохраняя все дерево сбалансировано, в O (журнал N) (наихудший или амортизируется)
- Это может быть полезно, чтобы удалить несколько значений в строке, перед тем балансировки дерева
- я чаще всего вставить 2 значений одновременно, однако это не является правилом (только наконечник в случае, если есть древовидная структура данных, которая принимает во внимание)
есть вариант AVL или RB что помогает мне в этом? Копытные деревья выглядят более похожими на это, но также нуждаются в некоторых изменениях, любой, у кого есть опыт, может поделиться некоторыми тысячами?
Более точно, какая процедура балансировки и/или процедура удаления помогут мне сохранить это действие с точки зрения времени?
Вне темы: меня интересуют эти типы алгоритмов, но не знаю, с чего начать изучать их. Какие хорошие ресурсы для начинающих вы можете мне указать? Что-то с визуальными примерами было бы здорово. –
colinodell, я уверен, что если вы разместите свой собственный вопрос, вы получите много полезных ответов. –
Почему вы хотите удалить поддерево? Содержимое любого конкретного поддерева может резко измениться в дереве самобалансировки. – ephemient