Pascal/Turbo Pascal - Saber la altura de un arbol

 
Vista:
sin imagen de perfil

Saber la altura de un arbol

Publicado por diego (98 intervenciones) el 04/11/2013 20:28:46
Buenas tardes, quisiera saber como sería el codigo para calcular la altura de un arbol;
Me trabé y no se bien como seguir.
1
2
3
4
5
6
7
8
9
10
11
12
procedure calcular_altura(a : arbol, var cant : integer, var altura_actual : integer);
    begin
      if (a = nil) then
        cant := 0
      else
        begin
          if (a^.hijo_izq <> nil) then
            calcular_altura(a^.hijo_izq, cant);
          if (a^.hijo_der <> nil) then
            calcular_altura(a^.hijo_der, cant);
          if (cant <> altura_actual) then
             cant := cant + 1;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Saber la altura de un arbol

Publicado por ramon (2158 intervenciones) el 05/11/2013 23:06:11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
{Mira a ver si esto sirve}
 
    uses
     crt;
  type
    arbol = ^pnodos;
    pnodos = record
           dat : char;
           izq, der : arbol;
         end;
  var
    nodo : arbol;
    n, ta : integer;
 
 
  procedure carga_arbol(var no : arbol; v : char);
   begin
       if no = nil then
       begin
          new(no);
          no^.dat := v;
          no^.izq := nil;
          no^.der := nil;
       end
    else
       if v > no^.dat then
       carga_arbol(no^.izq,v);
       if v < no^.dat then
       carga_arbol(no^.der,v);
   end;
 
   procedure muestra_preorden(n : arbol);
   begin
       if n <> nil then
       begin
          write(' ',n^.dat);
          muestra_preorden(n^.izq);
          muestra_preorden(n^.der);
       end;
   end;
 
   procedure muestra_inorden(n : arbol);
   begin
      if n <> nil then
      begin
      muestra_inorden(n^.izq);
      write(' ',n^.dat);
      muestra_inorden(n^.der);
      end;
   end;
 
   procedure muestra_postorden(n : arbol);
   begin
      if n <> nil then
      begin
      muestra_inorden(n^.izq);
      muestra_inorden(n^.der);
      write(' ',n^.dat);
      end;
   end;
 
 
  procedure altura(a : arbol; var tama : integer);
  var
    p, k : integer;
  begin
     if a = nil then
     tama := 0
    else
       begin
          altura(a^.izq,p);
          altura(a^.der,k);
      if p > k then
      k := p;
      tama := k + 1;
      end;
   end;
 
  begin
      clrscr;
      ta := 0;
      nodo := nil;
      for n := 1 to 16 do
      carga_arbol(nodo,chr(n + 64));
      muestra_preorden(nodo);
      writeln;
      altura(nodo,ta);
      writeln('   La Altura Es : ',ta);
      readln;
  end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar