Подскажите пожалуйста как можно написать итерационную процедуру подсчёта количества листьев в дереве
В правом верхнем углу есть ссылка "Поиск". Почему не пользуешься? Все уже давно решено:
http://forum.pascal.net.ru/index.php?s=&showtopic=7512&view=findpost&p=53475
Спасибо большое
Прошу прощения что 2 раз обращаюсь в теме. Прошу помочь с дописанием задачи(плохо понимаю в модульном программировании).
Условие:
Посчитать количество листьев в бинарном дереве:
а)Не рекурсивно(с помощью стека)
б)Рекурсивно
Все нужные процедуры собраны в модулях.
Types.pas ( 320 байт )
Кол-во скачиваний: 458
Lyalikov22.pas ( 1.71 килобайт )
Кол-во скачиваний: 485
Unit1.pas ( 1.07 килобайт )
Кол-во скачиваний: 469
1) корректируешь функцию Leaves так, чтобы она не эмулировала стек, а его использовала:
function Leaves(t: ttree): integer;
var
s: TStack;
sp, counter: integer;
begin
Stack_Init(s);
counter := 0;
repeat
while t <> nil do
begin
Stack_Push(s, t);
t := t^.left;
end;
if s = nil then
begin
Leaves := counter;
exit;
end;
t := Stack_Pop(s);
if (T^.right = nil) and (T^.left = nil) then
inc(counter);
t := t^.right;
until false;
end;
unit Types;
interface
type
TTree = ^TNode;
Telem = TTree;
TStack = ^Telement;
Telement =
Record
Info: Telem;
Next: TStack
End;
T = Integer;
TNode =
record
value: T;
Left, Right: TTree;
end;
implementation
end.
Спасибо за помощь