Помощь - Поиск - Пользователи - Календарь
Полная версия: Бинарное дерево
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Олег
Задание - рекурсивно определить высоту бинарного дерева.

Ковырялся-ковырялся, не осилил. Ни в faq, ни в интернете регения не нашел. Есть идеи ,как решать?
Заранее благодарен.
volvo
Что значит "не нашел"? Вот тут: балансировка деревьев
функция Height по-твоему что вычисляет, как не высоту переданного ей узла? Передавай Root - получишь высоту дерева.
Гость
Спасибо. Но где там используется рекурсия?
volvo
При вычислении rightHeight и leftHeight производится рекурсивный вызов функции Height ...
Гость
Благодарю. Тему можно закрывать.
Alex1988
Помогите написать процедуру, которая высчитывает значение листа двоичного дерева, имеющего наименьшую глубину(листа). wacko.gif
volvo
Посмотри здесь: Обход дерева , как реализован обход дерева "по уровням". Тебе останется только убрать печать значений, и добавить условие (узел является листом), при достижении которого надо выйти из процедуры...
Alex1988
 procedure CountFunc(dub:ptr; h:integer);
begin
if dub<>nil then begin
if IsTerminal(dub) and (minH >h) then begin
minval:=dub^.list;
minh:=h;
end;
CountFunc(dub^.left,h+1);
CountFunc(dub^.right,h+1);
end;
end;



а вот такая подойдет?
volvo
Не знаю... Что у тебя такое IsTerminal, что minH - мне неизвестно...
Alex1988
Цитата(volvo @ 8.06.2007 21:44) *

Не знаю... Что у тебя такое IsTerminal, что minH - мне неизвестно...

Первое - функция логического типа...
Второе - сам не догоню - вщял с одного сайта
volvo
Да, так тоже можно... Только в minH изначально должно храниться большое значение (если этой переменной присвоить в начале 0, то процедура не даст ожидаемого результата).
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.