Program P130;
 { Crearea unui arbore binar - recursie }
type Arbore=^Nod;
     Nod=record
               Info : string;
             Stg, Dr : Arbore
         end;

var  T : Arbore;    { rădăcina }

function Arb : Arbore;
 { crearea arborelui binar }
var R : Arbore;
    s : string;
begin
 readln(s);
 if s='' then Arb:=nil
    else begin
          new(R);
          R^.Info:=s;
          writeln('Daţi descendentul stîng al nodului ', s, ':');
          R^.Stg:=Arb;
          writeln('Daţi descendentul drept al nodului ', s, ':');
          R^.Dr:=Arb;
          Arb:=R;
         end;
end; { Arb }

procedure AfisArb(T : Arbore; nivel : integer);
 { afişarea arborelui binar }
var i : integer;
begin
 if T<>nil then
    begin
     AfisArb(T^.Stg, nivel+1);
     for i:=1 to nivel do write('    '); writeln(T^.Info);
     AfisArb(T^.Dr, nivel+1);
    end;
end; { AfisareArb }



begin
 writeln('Daţi rădăcina:');
 T:=Arb;
 AfisArb(T, 0);
 readln;
end.

