Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program Arbori2;
- uses crt;
- type arbore = ^nod;
- nod = record
- info : integer;
- stg, dr : arbore;
- end;
- var t : arbore;
- g, sum, k1, m, l, i, j, max1 : integer;
- a : array[1..100] of integer;
- procedure Arb(var t : arbore);
- var r : arbore;
- s : integer;
- begin inc(k1);
- readln(s);
- if s = 0 then t := nil
- else begin
- a[i] := s;
- g := g + 1;
- new(r);
- r^.info := s;
- i := i*2;
- writeln('Dati descendentul stang al nodului ',s,';');
- Arb(r^.stg); inc(i);
- writeln('Dati descendentul drept al nodului ',s,';');
- Arb(r^.dr); i := (i-1) div 2;
- t := r;
- end;
- end;
- procedure AfisareArb(t : arbore; nivel : integer);
- var i : integer;
- begin
- if t <> nil then begin
- AfisareArb(t^.stg, nivel+1);
- for i:=1 to nivel do
- write (' ');
- writeln(t^.info);
- AfisareArb(t^.dr, nivel+1);
- end;
- end;
- function inaltime(t : arbore; k : integer) : integer;
- var a, b : integer;
- begin
- if t = nil then inaltime := k
- else begin
- a := inaltime(t^.stg, k+1);
- b := inaltime(t^.dr, k+1);
- if a > b then inaltime := a
- else inaltime := b;
- end;
- end;
- procedure preordine(t : arbore);
- begin inc(i);
- max1 := -32000;
- if t <> nil then begin
- write(t^.info,' ');
- preordine(t^.stg);
- preordine(t^.dr);
- sum := sum + t^.info;
- if (t^.info > max1) then max1 := t^.info;
- end;
- end;
- procedure vertical;
- begin
- k1:=1 shl (m+1);
- for i:=1 to k1-1 do begin
- if (i=1 shl l) then begin
- inc(l);
- dec(m);
- writeln;
- end;
- for j:=1 to 1 shl (m+1)-2 do
- write(' ');
- if a[i]<>0 then
- write(a[i]:4)
- else
- write(' ':4);
- for j:=1 to 1 shl (m+1)-2 do
- write(' ');
- end;
- end;
- begin clrscr;
- i:=1; l:=1; m:=0;
- TEXTCOLOR(YELLOW);
- writeln('# Dati Radacina');
- arb(t);
- writeln;
- TEXTCOLOR(BLUE);
- writeln('# Arborele Orizontal');
- afisarearb(t, 0);
- writeln;
- TEXTCOLOR(YELLOW);
- writeln('# Parcurgerea in Preordine');
- preordine(t);
- writeln;
- writeln;
- // writeln('Numarul de nivele = ',inaltime(t, 0));
- // writeln('Inaltimea = ',inaltime(t, 0)-1);
- // writeln('Numarul de noduri = ',g);
- TEXTCOLOR(RED);
- writeln('# Suma = ',sum);
- writeln('# Media = ',sum/g:0:2);
- writeln('#Max = ', max1);
- WRITELN;
- // writeln('# Arborele Vertical');
- //vertical;
- writeln;
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement