Структуры данных. Деревья - 16 стр.

UptoLike

18
Пример 3.7. Описать рекурсивную процедуру Leaf подсчета количества k
листьев дерева.
procedure Leaf( T : Tree; var k : integer);
begin
if T <> nil then
if (T^.L=nil) and (T^.R=nil) then
k:=k+1
else
begin
Leaf(T^.L,k);
Leaf(T^.R,k)
end
end; { Leaf }
Количество List листьев дерева Root можно определить, обратившись к
процедуре Leaf :
List:=0; Leaf(Root,List);
Если описать реализацию в виде функции, то не придется заботиться о
присваивании нуля параметрурезультату перед ее вызовом.
function fLeaf ( T: Tree ) : integer;
begin
if T=nil then fLeaf:=0
else
if (T^.L=nil) and (T^.R=nil) then
fLeaf:=1
else fLeaf:= fLeaf(T^.L)+fLeaf(T^.R)
end {fLeaf};