С вашим определением идеально сбалансированного, все изменения в структуре происходят на самом глубоком уровне дерева, поэтому вам нужно беспокоиться только об этом одном уровне.
Максимально сбалансированное дерево с высотой h будет иметь2 ^ (h-1) листьев - например, для высоты 1, единственный лист - корень.Все они находятся на самом глубоком уровне.
Минимальное сбалансированное дерево с высотой h имеет только один узел на самом глубоком уровне.
Таким образом, число способов построения идеально сбалансированного бинарного деревастолько же, сколько вы можете иметь от 1 до 2 ^ (h-1) узлов на самом глубоком уровне.
Есть 2 ^ (h-1) узла, которые могут присутствовать или не присутствовать вэтот уровень (проблема комбинаций, а не перестановок), так что вы получаете 2 ^ (2 ^ (h-1)) возможностей, из которых только одна (случай «нет») является недействительной.
Так что я думаюВаш ответ (2 ^ (2 ^ (ч-1))) - 1.Поэтому, если вы можете определить правильное значение h ...
Это предполагает, что двоичное дерево search (со значениями элементов уникальными и в порядке), так что двоичное дерево полностью определяется выборомкакие узлы самого глубокого уровня присутствуют.В противном случае вы умножаете это на количество перестановок последовательности значений.
Позаботьтесь с моим определением h - дерево нулевой высоты вообще не будет иметь узлов и даст бессмысленный результат - sqrt (2) -1 - иррациональный ответ по крайней мере в двух смыслах.
РЕДАКТИРОВАТЬ
Комментарий Марка заставил меня задуматься еще немного.Для определенного роста я думаю, что мой ответ правильный.Проблема состоит в том, что конкретная высота допускает различное количество узлов в общем количестве, поскольку она позволяет различное количество узлов в этом самом глубоком слое.Таким образом, я не могу получить правильный ответ для определенного количества узлов таким образом.Итак ... давайте попробуем еще раз ...
Если наше дерево имеет высоту h, оно может иметь максимум (2 ^ h) -1 узлов.За исключением самого глубокого уровня, он имеет (2 ^ (h-1)) - 1 узел - все из которых должны присутствовать.
У нас есть c - ((2 ^ (h-1)) - 1)узлы на самом глубоком уровне, и мы можем выбрать, куда поместить эти узлы из 2 ^ (h-1) возможных положений на самом глубоком уровне.Я использую c для подсчета, потому что я хочу определить ...
n = 2^(h-1)
k = c-((2^(h-1))-1)
answer = n выберите k
Я до сих пор не получил h от c -это должен быть пол логарифма с основанием 2, но у меня такое чувство, что где-то рядом.