Описание тега tree-rotation

Tree rotation is an operation on a binary tree that changes the structure without interfering with the order of the elements.
1 ответ

Как создать восходящее дерево сплайнов из следующей последовательности

Это последовательность 20,10,5,30,40,57,3,2,4,35,25,18,22,27 Я пробовал сделать каждый новый вставленный узел корневым, но он не работает. Кто-нибудь может дать мне пошаговое объяснение?
1 ответ

Алгоритмы преобразования порядка полного бинарного дерева поиска в отсортированный порядок и наоборот

Этот вопрос похож на Сортированный список для завершения представления массива BST, но, возможно, более конкретно. Этот вопрос можно использовать для динамического решения проблемы вставки узла в полное дерево двоичного поиска. Рассмотрим полное дво…
1 ответ

Левая ротация бинарного дерева в ржавчине не может пережить оригинал

Я пытаюсь реализовать самобалансирующееся двоичное дерево поиска и написал функцию для замены дерева с его левым вращением: struct BST<'a> { l: Option<&'a BST<'a>>, r: Option<&'a BST<'a>> } impl<'a> BST&lt…
02 янв '17 в 17:49
1 ответ

Докажите максимальное количество поворотов для двух деревьев, чтобы стать равными

В книге " Введение в алгоритмы - креативный подход", вопрос 4.24: Пусть T1 и T2 два произвольных дерева, каждое из которых имеет n узлов. Докажите, что достаточно применить не более 2n поворотов к T1, чтобы оно стало равным T2. Для бинарных деревьев…
24 ноя '13 в 07:49
2 ответа

Указатели в AVL Tree Rotation

У меня проблемы с пониманием, почему работает приведенный ниже код поворота дерева. Если T2 указывает на y.left а также y.left указывает на xразве это не делает последнее назначение x.right = T2 равно x.right = x? Не должен ли указатель указывать на…
31 май '17 в 23:23
1 ответ

Вращение в красном черном дереве

Я пытаюсь выяснить вращение в красно-черном дереве, пока его балансировка не завершена. Я понимаю, почему происходит вращение, но я не понимаю, как это делается. Кроме того, какие промежуточные повороты, такие как LL, RR, LR и RL, выполняются для до…
28 окт '13 в 00:00
2 ответа

Дополнительные случаи в деревьях AVL

Деревья AVL, кажется, имеют четыре вида преобразований: левый-левый, левый-правый, правый-левый и правый-правый. Однако, похоже, могут быть и другие обстоятельства. Я представляю это как левостороннее: Ни левые, ни правые повороты не могут сбалансир…
2 ответа

Всегда ли возможно превратить один BST в другой, используя повороты дерева?

При заданном наборе значений возможно наличие множества различных деревьев двоичного поиска, которые могут быть сформированы из этих значений. Например, для значений 1, 2 и 3 есть пять BST, которые мы можем сделать из этих значений: 1 1 2 3 3 \ \ / …
2 ответа

Бинарное преобразование дерева с использованием поворотов

Пока я изучал среднесрочные вопросы о двоичных деревьях, я нашел утверждение, что любое произвольное двоичное дерево с n-узлами может быть преобразовано в любое другое двоичное дерево с n-узлами с максимум 2*n-2 поворотами. Есть ли доказательства эт…
1 ответ

Расстояние вращения между двумя бинарными деревьями

У меня есть следующее двоичное дерево, которое я пытаюсь преобразовать в целевое двоичное дерево (второе дерево в записи), используя минимальное количество поворотов дерева. Теоретическое минимальное количество поворотов для этого дерева - 5, однако…
1 ответ

AVL дерево проблем с вращением

Я столкнулся с очень странной проблемой с реализацией дерева AVL. Учитывая приведенный ниже код, я могу запустить его только без правильных поворотов, поскольку, если я это сделаю, у меня произойдет сбой. Я уже пробовал отлаживать, удалять файлы и п…
26 сен '16 в 16:25
2 ответа

Может ли дерево бинарного поиска сломаться при вращении?

Сейчас я изучаю алгоритмы, и при реализации вставки красно-черного дерева я пришел к идее, описанной в заголовке вопроса. Это происходит, когда задействованы равные узлы. Давайте начнем с простого дерева примеров, где левые потомки меньше, чем родит…
1 ответ

Максимум. количество вращений при вставке нового элемента в n-элементное красное черное дерево

Каково максимальное количество вращений при вставке нового элемента в n-элемент красное черное дерево? Если я прав, то вставка, которая не нарушает правила RBT, требует максимум 2 повороты (2 случая). Предполагая, что это все, есть O(1) тоже правиль…
10 фев '14 в 18:37
2 ответа

Всегда ли возможно превратить один BST в другой, используя не более O(n) поворотов дерева?

Этот предыдущий вопрос спрашивает, всегда ли возможно превратить один BST для набора значений в другой BST для того же набора значений, просто используя повороты дерева (ответ - да). Однако всегда ли можно сделать это, используя не более O(n) полны…
0 ответов

Сделать двоичное дерево наклоненным влево

Итак, у меня есть реализация двоичного дерева, которая выглядит так struct node { struct node *left; struct node *right; }; (фактическая реализация немного сложнее, поскольку там хранятся дополнительные данные, поскольку это для упрощения логической…
30 сен '19 в 22:56
0 ответов

Вращение Splay дерева в C

Я реализовал несколько функций для поворота узла в расширенном дереве, но это каким-то образом разрушает мое дерево, отправляя один и тот же узел в разные места. Они поворачивают сына к узлу папы. Указатель папы, вероятно, избыточен, но я хотел попр…
26 мар '21 в 22:16
1 ответ

Вставка и удаление деревьев AVL

Я хотел бы знать, правильно ли я применяю следующие операции вставки и удаления в дереве AVL: 62 / \ 44 78 / \ \ 17 50 88 / \ 48 54 вставка (42) вставка (90) удалить (62) вставка (92) удалить (50) В этом вопросе при удалении удаленный элемент заменя…
30 июн '21 в 16:42
0 ответов

Можно ли превратить один BST в другой с помощью итеративного алгоритма?

Я уже написал алгоритм, который может рекурсивно преобразовать один BST в другой. Решение было кратко объяснено по ссылке ниже. Всегда ли можно превратить один BST в другой, используя поворот дерева? rotate u right v / \ -----> / \ v C A u / \ &l…
0 ответов

Я столкнулся с проблемой при попытке повернуть дерево AVL в C

У меня возникли проблемы при попытке повернуть дерево AVL. Я копался в сети целый день и думаю, что мой код должен работать. Я не знаю почему, но когда я проверяю свою функцию, я теряю поддеревья, которые должны были быть повернуты. Могу ли я получи…
28 дек '21 в 20:38
1 ответ

Как предотвратить ненужное вращение моего Красно-Черного Дерева?

Я реализую красно-черное дерево на Java и столкнулся с проблемой вращения во время вставки. В частности, когда я вставляю в дерево числа 10, а затем 13, оно выполняет поворот, хотя, насколько я понимаю, этого не должно быть, так как эти вставки не н…