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

М
toto, ник Hunter ничего не напоминает? wink.gif
volvo

volvo
toto, надо рекурсию "развернуть" в итерацию... Вот один из вариантов:
function Leaves(t: ttree): integer;
const max_nodes = 100;
var
st: array[1 .. max_nodes] of ttree;
sp, counter: integer;

begin
sp := 0; counter := 0;
repeat

while t <> nil do begin
inc(sp); st[sp] := t;
t := t^.left;
end;

if sp = 0 then begin
Leaves := counter; exit;
end;

t := st[sp]; dec(sp);

if (T^.right = nil) and (T^.left = nil)
then inc(counter);

t := t^.right;

until false;
end;
toto
большое спасибо, все идеально работает give_rose.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.