Pascal/Turbo Pascal - arboles

   
Vista:

arboles

Publicado por Sofia (1 intervención) el 06/06/2013 06:16:30
necesito ayuda con un ejercicio, tengo que realizar un arbol de expresiones aritmeticas, obtener el resultado y luego visualizar el arbol, se tiene que resolver usando arboles binarios. por ej:
+
/ \
* -
/ \ / \
5 2 6 3

el arbol binario representa la expresion: (5*2)+(6-3)
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

arboles

Publicado por ramon (2072 intervenciones) el 09/06/2013 12:22:25
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
{Aver si esto te sirve}
 
Program unarbol;
 uses
    crt;
 type
    dato = integer;
    punt =^nodo;
    nodo = record
           eldat : dato;
        Izq, dch : punt;
        end;
   var
     raiz : punt;
        n : nodo;
      dat : dato;
    tecla : char;
 
   procedure bacio;
   begin
       raiz := nil;
   end;
 
  procedure entrada(i : dato; var r : punt);
  begin
     if r = nil then
      begin
          new(r);
          with r^ do
          begin
             eldat := i;
               izq := nil;
               dch := nil;
          end
       end
     else
       if i < r^.eldat then
       entrada(i,r^.izq)
   else
       entrada(i,r^.dch)
   end;
 
   procedure enpreorden(r : punt);
   begin
     if r <> nil then
     begin
        write('  ',r^.eldat);
        enpreorden(r^.izq);
        enpreorden(r^.dch);
     end;
   end;
 
  procedure eninorden(r : punt);
  begin
     if r <> nil then
     begin
       eninorden(r^.izq);
       write('  ',r^.eldat);
       eninorden(r^.dch);
     end;
   end;
 
    procedure enorden(r : punt);
    begin
     if r <> nil then
     begin
        enorden(r^.izq);
        enorden(r^.dch);
        write('  ',r^.eldat);
     end;
   end;
 
   procedure menu;
   var
     pul : char;
     salir : boolean;
   begin
      salir := false;
     repeat
         clrscr;
           writeln('    **** Menu General ****');
           writeln;
           writeln('  <<<<<< Arboles Binarios >>>>>>');
           writeln;
           writeln('   1 = Entrada Valores');
           writeln('   2 = Visualizar El Enpreorden');
           writeln('   3 = Visualizar El Eninorden');
           writeln('   4 = Visualizar El Enorden');
           writeln('   5 = Salir');
           writeln;
           writeln('  <<<<< Elija Opcion >>>>>');
           repeat
                pul := readkey;
           until pul in['1','2','3','4','5'];
           clrscr;
         case pul of
     '1' : begin
             writeln;
             writeln('**** Entrada Valores En Arbol Binario ****');
             writeln;
             write('   Entre Valor Numerico : ');
            {$I-} readln(dat); {$I+}
            if ioresult <> 0 then
            begin
            writeln(' Error de dato Numerico Intentelo De Nuevo ');
            writeln(' Pulse Tecla [Espacio]');
            readkey;
            end
          else
             entrada(dat,raiz);
           end;
     '2' : begin
           writeln;
           enpreorden(raiz);
           writeln;
           writeln(' Pulse Tecla [Espacio]');
           readkey;
           end;
     '3' : begin
           writeln;
           eninorden(raiz);
           writeln;
           writeln(' Pulse Tecla [Espacio]');
           readkey;
           end;
     '4' : begin
           writeln;
           enorden(raiz);
           writeln;
           writeln(' Pulse Tecla [Espacio]');
           readkey;
           end;
     '5' : salir := true;
         end;
     until salir = true;
   end;
 
   begin
     bacio;
     menu;
    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