Я написал библиотеку языков языка AVL в качестве сортированных контейнеров общего назначения. Для целей тестирования я хотел бы иметь способ заполнить дерево, чтобы он был максимально несбалансированным, т.е. Чтобы он имел максимальную высоту для количества содержащихся в нем узлов.
У деревьев AVL есть свойство nice: если, начиная с пустого дерева, вы вставляете узлы в порядке возрастания (или убывания), дерево всегда точно сбалансировано (т.е. имеет минимальную высоту для заданного количества узлов), Одна последовательность целых ключей, которая генерирует точно сбалансированное дерево AVL T n для каждого числа узлов n, начиная с пустого дерева T 0, просто
- k 1= 0
- k n + 1= k n +1, т.е. k n= n-1
Я ищу (целую) последовательность целых ключей, которая при вставке в первоначально пустом дереве T 0 генерирует деревья AVL T 0..., T n, которые максимально сбалансированы un.
Меня также интересовало бы решение, в котором только последнее дерево, T n, максимально не сбалансировано (число узлов n будет параметром алгоритма).
Решение, удовлетворяющее условию
- max (k 1,..., k n) - min (k 1,..., k n) + 1 ≤ 2 n
предпочтительнее, но строго не требуется. Целевой диапазон 4 n вместо 2 n может быть разумной целью.
Я не смог найти что-либо в Интернете относительно генерации, путем вставки, деревьев AVL максимальной высоты. Конечно, последовательность сгенерированных деревьев, которые я ищу, будет включать в себя все так называемые деревья Фибоначчи, которые являются деревьями AVL заданной глубины с минимальным количеством узлов. Смешно, английская Википедия даже не упоминает деревья Фибоначчи (или числа Фибоначчи!) В статье о деревьях AVL, в то время как в немецкой Википедии есть очень хорошая статья полностью посвященная их. Но я все еще в неведении относительно моего вопроса.
Приветствую вас.