Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ листья дерева-итеративный алгоритм

Автор: toto 5.12.2005 5:52

нашла на форуме как посчитать количество листьев в дереве, но рекурсивный алгоритм, помогите пожалуйста с итеративным алгоритмом

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


Автор: volvo 5.12.2005 15:03

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 6.12.2005 5:25

большое спасибо, все идеально работает give_rose.gif