Необходимо написать функцию по подсчёту кол-ва узлов в дереве. Я смог сделать процедуру и то, которая выводить значение будет через ещё одну процедуру. Но что-то в итоге не пашет
TYPE
ND=^NODE;
Node=record
INF1:integer;
INF2:string;
LEFT:ND;
RIGHT:ND;
end;
VAR
ROOT,P,Q:ND;
procedure node_count(P:ND; VAR n_count:Integer);
Begin
IF P<>NIL then
begin
IF (P^.LEFT<>NIL) or (P^.RIGHT<>NIL) then
inc(n_count);
node_count(P^.LEFT,n_count);
node_count(P^.RIGHT,n_count);
end;
End;
procedure prt_node_count(n_count);
VAR
n_count:integer;
Begin
n_count:=0;
node_count(ROOT,n_count);
writeln(n_count);
readkey;
End;
Тут посмотри:
http://forum.pascal.net.ru/index.php?s=&showtopic=5536&view=findpost&p=42746
Да, всё, разобрался
У меня прям болезнь какая-то, сидишь сначало не видишь своей ошибки, потом решаешься запостить, постишь, а через несколько минут допирает где ошибся ))
Нехватало всего-лишь одного условия, что если эти узлы - листья
procedure node_count(P:ND; VAR n_count:Integer);
Begin
IF P<>NIL then
begin
IF (P^.LEFT<>NIL) or (P^.RIGHT<>NIL) then
inc(n_count);
IF (P^.LEFT=NIL) and (P^.RIGHT=NIL) then
inc(n_count);
node_count(P^.LEFT,n_count);
node_count(P^.RIGHT,n_count);
end;
End;