Pascal/Turbo Pascal - Contador de hijos {ARBOL BINARIO}

 
Vista:
sin imagen de perfil

Contador de hijos {ARBOL BINARIO}

Publicado por Rama (1 intervención) el 29/03/2016 19:24:19
Hola, estoy realizando unas practicas y el inciso me pide generar un contador para un árbol binario dado, este debe ser resuelto de forma recursiva... no sé si alguien podría pasarme algún código generalizado para ver como se resuelve, ya que de la manera que lo pensé no analiza todas las ramas... se me complica eñ agregar la recursividad a los árboles...

Saludos y gracias
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

Contador de hijos {ARBOL BINARIO}

Publicado por ramon (2158 intervenciones) el 31/03/2016 16:24:10
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
91
92
93
94
95
96
97
98
99
100
{Algo de esto te serbia}
 
program arbol_binario;
 uses
    crt;
 
type
   ptarbol = ^nudarbol;
   nudarbol = record
         numero  : integer;
         izq, der: ptarbol;
     end;
 
  var
    giaarbol : ptarbol;
    nn, t : integer;
 
  procedure entradaarbol(var giaarbol : ptarbol; num : integer);
  begin
    if giaarbol = NIL  then
    begin
      new(giaarbol);
      giaarbol^.numero := num;
      giaarbol^.der := NIL;
      giaarbol^.izq := NIL;
    end
  else
      begin
       if num < giaarbol^.numero then
        begin
        entradaarbol(giaarbol^.izq, num);
     end
   else
       begin
        entradaarbol(giaarbol^.der, num);
       end;
     end;
  end;
 
  procedure enorden(giaarbol : Ptarbol);
  begin
    if giaarbol <> NIL then
    begin
    enorden(giaarbol^.izq);
    write('  ',giaarbol^.numero);
    enorden(giaarbol^.der);
    end;
  end;
 
  procedure preorden(giaarbol : Ptarbol);
  begin
   if giaarbol <> NIL then
   begin
     write('  ',giaarbol^.numero);
     preorden(giaarbol^.izq);
     preorden(giaarbol^.der);
   end;
  end;
 
  procedure postorden(giaarbol : Ptarbol);
  begin
    if giaarbol <> NIL then
    begin
     postorden(giaarbol^.izq);
     postorden(giaarbol^.der);
     write('  ',giaarbol^.numero);
   end;
  end;
 
 procedure contador(co : ptarbol);
 begin
    if co <> NIL then
    begin
     nn := nn + 1;
     contador(co^.izq);
     contador(co^.der);
   end;
 end;
 
 
  begin
      clrscr;
      for t := 1 to 10 do
      begin
         entradaarbol(giaarbol,t);
      end;
      writeln('   En Enorden');
      enorden(giaarbol);
      writeln;
      writeln('   En Posorden');
      postorden(giaarbol);
      writeln;
      writeln('   En Preorden');
      preorden(giaarbol);
      nn := 0;
      writeln;
      contador(giaarbol);
      writeln('  Total Nodos = ',nn);
      readkey;
  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