Acasa Tehnologie Frunzele unui arbore

Frunzele unui arbore

by Dragos Schiopu

programare

>

{determinare numar frunze dintr-un arbore binar,afisare chei din nodurile care au exact un succesor}
type arbore=^ref;
     ref=record
               inf:integer;
               st,dr:arbore;
     end;
var r:arbore;
    f:text;
    nivel:integer;
procedure creare(var p:arbore);
var val:integer;
begin
     read(f,val);
     if val=0 then p:=nil
            else
                begin
                     new(p);
                     p^.inf:=val;
                     creare(p^.st);
                     creare(p^.dr);
                end;
end;
procedure preordine(p:arbore);
begin
     if p<>nil then
                   begin
                        write(p^.inf:4);
                        preordine(p^.st);
                        preordine(p^.dr);
                   end;
end;
function nr_fr(p:arbore):integer;
begin
     if p=nil then nr_fr:=0
              else
                  if (p^.st=nil) and(p^.dr=nil) then
                                 nr_fr:=nr_fr(p^.st)+nr_fr(p^.dr)+1
                                                 else
                                 nr_fr:=nr_fr(p^.st)+nr_fr(p^.dr);
end;
procedure un_succesor(p:arbore);
begin
     if p<>nil then
        begin
             if ((p^.st<>nil) and(p^.dr=nil))
                or ((p^.st=nil) and(p^.dr<>nil)) then write(p^.inf);
             un_succesor(p^.st);
             un_succesor(p^.dr);
        end;
end;
BEGIN
     r:=nil;
     assign(f,'arbore.txt');
     reset(f);
     creare(r);
     close(f);
     writeln('parcurgere in preordine-RSD');
     preordine(r);
     writeln;
     writeln('numarul de frunze din arbore=', nr_fr(r));
     writeln('afisarea nodurilor care au exact un succesor:');
     un_succesor(r);
     readln;
END.
{PascalZone.uv.ro}

s-ar putea sa-ti placa