Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > построение бинарного дерева определенной высоты


Автор: knopa 20.12.2005, 14:40
Привет всем!Есть задача даны два числа:n-количество элементов в двоичном дереве и k-высота дерева.Пользователь вводит n и k.После чего формируется массив от 1 до n, те если n = 4 то массив 1 2 3 4!Мне нужно предложить такую последовательность чисел при которой высота дерева будет равна k!Те переформировать массив каким либо образом!
Например n=4 k=4
формируем массив 1 2 3 4
на выходе должно получиться 1 3 2 4
Еще один примерчик :
n=6 k=3
формируем массив 1 2 3 4 5 6
на выходе должно получиться 3 1 2 5 4 6
Если дерева не существует то нужно вывести невожможно постоить дерево! но как ето сделать я знаю.
у меня есть идея алглоритма!Она состоит в следующем!Беру массив сторою из него дерево если высота равна k то вывожу и выхожу из проги,если нет то делаю перестановку массива например 1243 если высота равна k то вывожу и выхожу и тд. Итого у меня будет n! перестановок в худшем случае!
Может есть более эффективный алгоритм??? Помогите чем сможете, подскажите идею алгоритма!!!!

Автор: Guest 20.12.2005, 15:19
[censored33! Пожалуйста, соблюдайте элементарные правила приличия при общении на форуме] какое-то

Автор: knopa 21.12.2005, 01:02
Да уж другого слова и не подберешь!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)