Сформировать дерево Т и определить число вхождений параметра Е в дерево Т — Pascal(Паскаль)

Program  E_in_tree;
uses  crt;
 
TYPE BT=Real;
     U = ^BinTree;
     BinTree = Record
         Inf : BT;
         L,R : U;
END;
 
PROCEDURE Ins(Var T : U; X : BT);
Var vsp, A : U;
Begin
    New(A); A^.Inf := X; A^.L:=Nil; A^.R := Nil;
    If T=Nil Then T:=A
                Else Begin vsp := T;
                          While vsp <> Nil Do
                           If A^.Inf < vsp^.Inf
                           Then
                                If vsp^.L=Nil Then Begin vsp^.L:=A; vsp:=A^.L End Else vsp:=vsp^.L
                           Else
                  If vsp^.R = Nil Then Begin vsp^.R := A; vsp:=A^.R End Else vsp := vsp^.R;
                       End;
END;
 
PROCEDURE PrintTree(T:U);
Begin
 if T<>nil then
             begin
              PrintTree(T^.L);
              Writeln('  ', T^.inf:5:3);
              PrintTree(T^.R);
             end;
END;
 
PROCEDURE Vh_E(T:U; E:BT; var i:integer);
Begin
 if T<>nil then
             begin
              Vh_E(T^.L,E,i);
              if T^.inf=E then inc(i);
              Vh_E(T^.R,E,i);
             end;
END;
 
PROCEDURE InsDer(var T:U);
var i,n:integer;
    x:BT;
Begin
  Write('Количество элементов в дереве : ');
  readln(n);
  for i:=1 to n do
  begin
     write('Элемент : '); readln(x);
    {x:=-10+Random(21); write(x:5:3,'   '); }
    Ins(T,x);
  end;
END;
 
var Der:U;
    E:BT;
    i:integer;
BEGIN
 clrscr;
  InsDer(Der);
  writeln;
  PrintTree(Der);
  write('E = '); readln(E);
  i:=0;
  Vh_E(Der,E,i); writeln;
  writeln('Количество элемента Е в дереве : ',i);
  readln;
END.

Leave a Comment

94 − = 87