Два бинарных дерева поиска называются линейно эквивалентными, когда они сходятся в своих обходах по порядку. Следующая теорема объясняет, почему повороты деревьев так фундаментальны:
Пусть A и B - бинарные деревья поиска. Тогда A и B линейно эквивалентны тогда и только тогда, когда они связаны последовательностью поворотов дерева.
Я заметил этот результат, когда я впервые узнал о структурах данных и хотел глубже понять особый статус поворотов деревьев.
Доказательство простое и интуитивно понятное: поверните наименьший элемент до корневого положения вдоль левого корешка. По порядку инварианта это переставленное дерево не может иметь левого поддерева. Теперь вернитесь на правильное поддерево. Результат - нормальная форма для проверки линейной эквивалентности.
Хотя это базовая теорема, я никогда не сталкивался с ней в литературе. Я был бы очень признателен, если в следующий раз мне понадобится использовать этот результат.
(Бонусный тизер мозга: каков наилучший алгоритм для нахождения кратчайшей последовательности поворотов дерева, которые соединяют два линейно эквивалентных бинарных дерева поиска?)