Задание - рекурсивно определить высоту бинарного дерева.
Ковырялся-ковырялся, не осилил. Ни в faq, ни в интернете регения не нашел. Есть идеи ,как решать?
Заранее благодарен.
Что значит "не нашел"? Вот тут: http://forum.pascal.net.ru/index.php?s=&showtopic=4984&view=findpost&p=40331
функция Height по-твоему что вычисляет, как не высоту переданного ей узла? Передавай Root - получишь высоту дерева.
Спасибо. Но где там используется рекурсия?
При вычислении rightHeight и leftHeight производится рекурсивный вызов функции Height ...
Благодарю. Тему можно закрывать.
Помогите написать процедуру, которая высчитывает значение листа двоичного дерева, имеющего наименьшую глубину(листа).
Посмотри здесь: http://volvo71.narod.ru/faq_folder/bin_tree.htm#bintree_walk , как реализован обход дерева "по уровням". Тебе останется только убрать печать значений, и добавить условие (узел является листом), при достижении которого надо выйти из процедуры...
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;
Не знаю... Что у тебя такое IsTerminal, что minH - мне неизвестно...
Да, так тоже можно... Только в minH изначально должно храниться большое значение (если этой переменной присвоить в начале 0, то процедура не даст ожидаемого результата).