Pascal/Turbo Pascal - Caminos Arbol Binario

 
Vista:
Imágen de perfil de Juan Martin

Caminos Arbol Binario

Publicado por Juan Martin (8 intervenciones) el 14/04/2015 01:21:29
Buenas hago a sieguinte consulta: ¿ Como contar los caminos de un arbol binario dada una lista de nodos que se corresponde con el arbol ?

Osea que la lista se refiere a un camino, lo que tengo que contar es cuantos caminos hay hasta llegar a una hoja.

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

Caminos Arbol Binario

Publicado por ramon (2158 intervenciones) el 15/04/2015 14:47:06
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
{A ver si esto te ayuda }
 
program arboles;
  uses
     crt;
   const
      prueva : array[1..12] of integer = (
      3,9,12,34,23,56,8,1,4,16,7,10);
 
  type
    nodos = ^regnodo;
    regnodo = record
          dato : integer;
          der, izq : nodos;
        end;
 
   var
     arbol : nodos;
     caminos : integer;
     k : integer;
 
 
  procedure insercion(var i : nodos; d : integer);
  begin
     if i = nil then
     begin
        new(i);
        i^.dato := d;
        i^.izq := nil;
        i^.der := nil;
     end
  else
      if i^.dato > d then
      insercion(i^.izq,d)
   else
      insercion(i^.der,d);
  end;
 
  function cuentanodos(i : nodos) : integer;
  begin
     if i = nil then
     cuentanodos := 0
  else
     cuentanodos := 1 + cuentanodos(i^.izq) + cuentanodos(i^.der);
   end;
 
  procedure inorden(i : nodos);
  begin
     if i <> nil then
     begin
         inorden(i^.izq);
         write('  ',i^.dato);
         inorden(i^.der);
     end;
   end;
 
   procedure preorden(i : nodos);
   begin
      if i <> nil then
      begin
         write('  ',i^.dato);
         preorden(i^.izq);
         preorden(i^.der);
     end;
  end;
 
   procedure postorden(i : nodos);
   begin
       if i <> nil then
       begin
          postorden(i^.izq);
          postorden(i^.der);
          write('  ',i^.dato);
       end;
    end;
 
   procedure buscar(i : nodos; n : integer);
   begin
       if i = nil then
       caminos := 0
    else
       if n = i^.dato then
       begin
          caminos := 1;
       end
    else
        if n < i^.dato then
        buscar(i^.izq,n)
     else
        buscar(i^.der,n);
        caminos := caminos + 1;
   end;
 
 
  begin
     arbol := nil;
     for k := 1 to 12 do
     insercion(arbol,prueva[k]);
     clrscr;
     writeln;
     writeln('  Numeros = 1,3,4,7,8,9,10,12,16,23,34,56');
     write('   Entre Numero A buscar : ');
     readln(k);
     writeln('   Los Nodos Son = ',cuentanodos(arbol));
     writeln;
     write('  Inorden   = ');
     inorden(arbol);
     writeln;
     write('  Preorden  = ');
     preorden(arbol);
     writeln;
     write('  Postorden = ');
     postorden(arbol);
     writeln;
     buscar(arbol,k);
     writeln;
     writeln('   Los Caminos Son = ',caminos - 1);
     writeln;
     writeln('   Pulse Una Tecla');
     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