Помощь - Поиск - Пользователи - Календарь
Полная версия: бинарные деревья
Форум «Всё о Паскале» > 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;

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