Advertisement
Guest User

Untitled

a guest
Mar 21st, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.82 KB | None | 0 0
  1. Program Arbori2;
  2. uses crt;
  3. type arbore = ^nod;
  4. nod = record
  5. info : integer;
  6. stg, dr : arbore;
  7. end;
  8. var t : arbore;
  9. g, sum, k1, m, l, i, j, max1 : integer;
  10. a : array[1..100] of integer;
  11.  
  12. procedure Arb(var t : arbore);
  13. var r : arbore;
  14. s : integer;
  15. begin inc(k1);
  16. readln(s);
  17. if s = 0 then t := nil
  18. else begin
  19. a[i] := s;
  20. g := g + 1;
  21. new(r);
  22. r^.info := s;
  23. i := i*2;
  24. writeln('Dati descendentul stang al nodului ',s,';');
  25. Arb(r^.stg); inc(i);
  26. writeln('Dati descendentul drept al nodului ',s,';');
  27. Arb(r^.dr); i := (i-1) div 2;
  28. t := r;
  29. end;
  30. end;
  31.  
  32. procedure AfisareArb(t : arbore; nivel : integer);
  33. var i : integer;
  34. begin
  35. if t <> nil then begin
  36. AfisareArb(t^.stg, nivel+1);
  37. for i:=1 to nivel do
  38. write (' ');
  39. writeln(t^.info);
  40. AfisareArb(t^.dr, nivel+1);
  41. end;
  42. end;
  43.  
  44. function inaltime(t : arbore; k : integer) : integer;
  45. var a, b : integer;
  46. begin
  47. if t = nil then inaltime := k
  48. else begin
  49. a := inaltime(t^.stg, k+1);
  50. b := inaltime(t^.dr, k+1);
  51. if a > b then inaltime := a
  52. else inaltime := b;
  53. end;
  54. end;
  55.  
  56. procedure preordine(t : arbore);
  57. begin inc(i);
  58. max1 := -32000;
  59. if t <> nil then begin
  60. write(t^.info,' ');
  61. preordine(t^.stg);
  62. preordine(t^.dr);
  63. sum := sum + t^.info;
  64. if (t^.info > max1) then max1 := t^.info;
  65. end;
  66. end;
  67.  
  68. procedure vertical;
  69. begin
  70. k1:=1 shl (m+1);
  71. for i:=1 to k1-1 do begin
  72. if (i=1 shl l) then begin
  73. inc(l);
  74. dec(m);
  75. writeln;
  76. end;
  77. for j:=1 to 1 shl (m+1)-2 do
  78. write(' ');
  79. if a[i]<>0 then
  80. write(a[i]:4)
  81. else
  82. write(' ':4);
  83. for j:=1 to 1 shl (m+1)-2 do
  84. write(' ');
  85. end;
  86. end;
  87.  
  88.  
  89. begin clrscr;
  90. i:=1; l:=1; m:=0;
  91. TEXTCOLOR(YELLOW);
  92. writeln('# Dati Radacina');
  93. arb(t);
  94. writeln;
  95. TEXTCOLOR(BLUE);
  96. writeln('# Arborele Orizontal');
  97. afisarearb(t, 0);
  98. writeln;
  99. TEXTCOLOR(YELLOW);
  100. writeln('# Parcurgerea in Preordine');
  101. preordine(t);
  102. writeln;
  103. writeln;
  104. // writeln('Numarul de nivele = ',inaltime(t, 0));
  105. // writeln('Inaltimea = ',inaltime(t, 0)-1);
  106. // writeln('Numarul de noduri = ',g);
  107. TEXTCOLOR(RED);
  108. writeln('# Suma = ',sum);
  109. writeln('# Media = ',sum/g:0:2);
  110. writeln('#Max = ', max1);
  111. WRITELN;
  112. // writeln('# Arborele Vertical');
  113. //vertical;
  114. writeln;
  115. readln;
  116. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement