Два бинарных дерева поиска называются линейно эквивалентными, когда они сходятся в своих обходах по порядку. Следующая теорема объясняет, почему повороты деревьев так фундаментальны:
Пусть A и B - бинарные деревья поиска. Тогда A и B линейно эквивалентны тогда и только тогда, когда они связаны последовательностью поворотов дерева.
Я заметил этот результат, когда я впервые узнал о структурах данных и хотел глубже понять особый статус поворотов деревьев.
Доказательство простое и интуитивно понятное: поверните наименьший элемент до корневого положения вдоль левого корешка. По порядку инварианта это переставленное дерево не может иметь левого поддерева. Теперь вернитесь на правильное поддерево. Результат - нормальная форма для проверки линейной эквивалентности.
Хотя это базовая теорема, я никогда не сталкивался с ней в литературе. Я был бы очень признателен, если в следующий раз мне понадобится использовать этот результат.
(Бонусный тизер мозга: каков наилучший алгоритм для нахождения кратчайшей последовательности поворотов дерева, которые соединяют два линейно эквивалентных бинарных дерева поиска?)
источник
Ответы:
Как указывает здесь Дэвид Эппштейн , неизвестно даже, чтобы найти кратчайший путь для бинарных деревьев. В комментариях к этому ответу он ссылается на лучшие текущие оценки
источник
Ранняя статья, в которой это наблюдение было сделано явно - вращение сохраняет обходы по порядку, - это (на рисунке 2) Самонастраивающиеся деревья бинарного поиска Слеатора и Тарьяна 1983 года . Эвристика перехода к корню была изучена в статье Аллена и Манро 1978 года « Самоорганизующиеся деревья двоичного поиска» .
источник
Поскольку вас интересует структура поворотов деревьев, я думаю, что вас также может заинтересовать следующая статья, в которой показано, что график вращения бинарных деревьев с фиксированным числом узлов имеет гамильтонов цикл . На самом деле Лукас показал, что цикл может проходить с постоянной задержкой на дерево. (Вращение может быть выполнено вO ( 1 ) конечно, но априори не очевидно, что мы должны быть в состоянии решить, какой поворот выполнить в гамильтоновом цикле в O ( 1 ) время.) Естественно, вас также могут заинтересовать ссылки внутри.
Джоан М. Лукас, Граф вращения бинарных деревьев - гамильтонов, Журнал алгоритмов, том 8, выпуск 4, декабрь 1987, страницы 503-535, ISSN 0196-6774, DOI: 10.1016 / 0196-6774 (87) 90048-4 ,
Более простое и конструктивное доказательство более простого факта, что гамильтонов путь в графе вращения существует можно найти в этой более поздней статье, написанной в соавторстве с Лукасом и ее сотрудниками.
Lucas JM, Vanbaronaigien DR, Ruskey F., О вращениях и генерации двоичных деревьев, Журнал алгоритмов, том 15, выпуск 3, ноябрь 1993, страницы 343-366, ISSN 0196-6774, DOI: 10.1006 / jagm.1993.1045 .
источник
Более простое доказательство, также конструктивное, того факта, что путь гамильтониана существует в графе вращения, можно найти в последнем.
источник