Помощь - Поиск - Пользователи - Календарь
Полная версия: бинарные деревья
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Renbo
Необходимо написать функцию по подсчёту кол-ва узлов в дереве. Я смог сделать процедуру и то, которая выводить значение будет через ещё одну процедуру. Но что-то в итоге не пашет wacko.gif


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;

volvo
Тут посмотри:
Деревья (1 задачка)
Renbo
Да, всё, разобрался smile.gif
У меня прям болезнь какая-то, сидишь сначало не видишь своей ошибки, потом решаешься запостить, постишь, а через несколько минут допирает где ошибся ))
Нехватало всего-лишь одного условия, что если эти узлы - листья


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;

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.