![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 08.11.2013
Сообщений: 23
|
![]()
Дано число N. Необходимо вычислить количество возможных двоичных деревьев, высота которых не превышает N. Каждый узел в дереве может либо не иметь ни одного потомка, либо иметь сразу двух потомков. Например, для N=1 возможно только одно дерево, состоящее из одного узла. Для N=2 возможны уже два варианта - либо дерево из одного узла, либо дерево из узла с двумя потомками. При этом высоты деревьев могут отличаться друг от друга.
Код:
|
![]() |
![]() |
![]() |
#2 | |||
Участник клуба
Регистрация: 03.12.2009
Сообщений: 1,013
|
![]()
Давайте начнем с условия:
Цитата:
Или все-таки допускается, что узел может иметь более 2 потомков, в таком случае это допустимо... Но правильней было бы тогда указать в условии: Цитата:
Цитата:
Последний раз редактировалось Базиля; 09.01.2014 в 02:00. |
|||
![]() |
![]() |
![]() |
#3 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Базиля, извините, но Вы не правы.
посмотрите теорию. Да хоть ту же вики: Двоичное дерево Цитата:
|
|
![]() |
![]() |
![]() |
#4 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
f(n) = f(n-1)^2 + 1
вроде так, но не доказано. |
![]() |
![]() |
![]() |
#5 | |
Участник клуба
Регистрация: 03.12.2009
Сообщений: 1,013
|
![]()
Serge_Bliznykov
Цитата:
![]() А если мы уже говорим о ребенке/сестре/брате, то здесь уже подразумеваем именно ПРЯМОЕ отношение к родительскому узлу и ни к какому иначе. |
|
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
![]() |
|
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 03.12.2009
Сообщений: 1,013
|
![]()
Нужно только определиться с понятием "потомок" в данном контексте.
Вы считаете что я не прав? |
![]() |
![]() |
![]() |
#8 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Только вот значение "потомок" в исходном посте TC совпадает со значением в определении (на вики, например): - это только "дети" (внуки и правнуки не участвуют в данном случае). |
|
![]() |
![]() |
![]() |
#9 | ||
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
![]() Цитата:
Цитата:
![]() О самой задаче : очевидно, что тут будет рекурентная формула.. А вот какая - надо думать. |
||
![]() |
![]() |
![]() |
#10 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
![]()
О решении : для начала я вынужден не согласиться с ТС. Для N = 2 возможны три варианта : один корень, корень и еще одна вершина, соединенная с ним, и полное бинарное дерево..
Далее.. Пусть у нас есть решения для i-той высоты. Тогда найдем решение для i+1. Это будут все решения для i + построим такое дерево : у каждого узла только один сын. И таких узлов ровно i. Теперь будем прибавлять к каждой вершине, начиная с корня, еще одного такого сына. Таким макаром мы добавим еще i+1 вариант. И тогда решением будет сумма от i = 1 до n самих i. (А теперь запихнем это в арифметическую прогрессию. И получим (n+1)*n/2 |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Правильно ли работает программа на C++ | hirano | Помощь студентам | 0 | 13.03.2012 11:46 |
правильно ли работает программа? | ITdocer | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 04.11.2011 09:37 |
Программа работает не правильно | artem611 | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 22.09.2010 07:49 |
программа работает. правильно ли? | getUp | Общие вопросы C/C++ | 10 | 26.03.2010 07:07 |
Не правильно работает программа | Virus_L | Помощь студентам | 0 | 28.12.2009 22:52 |