4 IMPLEMENTACION : APLICACIONES ARBOLES BINARIOS
\r
9 uses tda_gral, arbol_bin;
\r
11 { procesa todos los nodos de un arbol recursivamente en INORDEN}
\r
12 PROCEDURE APL_AB_recorrer_rec_in( a: AB_arbol);
\r
14 { procesa todos los nodos de un arbol recursivamente en PREORDEN}
\r
15 PROCEDURE APL_AB_recorrer_rec_pre( a: AB_arbol);
\r
17 { procesa todos los nodos de un arbol recursivamente en POSORDEN}
\r
18 PROCEDURE APL_AB_recorrer_rec_pos( a: AB_arbol);
\r
20 { busca un elemento segun una clave determinada exhaustivamente (BUSQUEDA EXTERNA) RECURSIVO }
\r
21 PROCEDURE APL_AB_buscar_externo( VAR a: AB_arbol; e: Tipo_Elem; VAR error: boolean );
\r
25 { recorrer todos los nodos del arbol procesando todos los elementos }
\r
26 { ORDEN de recorrido: INORDEN, o sea, izquierda, nodo, derecha }
\r
27 PROCEDURE APL_AB_recorrer_rec_in( a: AB_arbol);
\r
28 PROCEDURE recorrer_rec( a: AB_arbol );
\r
33 { proceso el subarbol izquierdo }
\r
34 AB_mover_cte( a, AB_izquierda, error );
\r
38 AB_mover_cte( a, AB_padre, error );
\r
40 { proceso el nodo corriente }
\r
42 Procesar_Elem_Recorrido( e );
\r
43 { proceso el subarbol izquierdo }
\r
44 AB_mover_cte( a, AB_derecha, error );
\r
48 { AB_mover_cte( a, AB_padre, error ); no hace falta }
\r
54 { me voy a la raiz y desde allí proceso todo }
\r
55 AB_mover_cte( a, AB_raiz, error );
\r
59 { recorrer todos los nodos del arbol procesando todos los elementos }
\r
60 { ORDEN de recorrido: PREORDEN, o sea, nodo, izquierda, derecha }
\r
61 PROCEDURE APL_AB_recorrer_rec_pre( a: AB_arbol);
\r
62 PROCEDURE recorrer_rec( a: AB_arbol );
\r
67 { proceso el nodo corriente }
\r
69 Procesar_Elem_Recorrido( e );
\r
70 { proceso el subarbol izquierdo }
\r
71 AB_mover_cte( a, AB_izquierda, error );
\r
75 AB_mover_cte( a, AB_padre, error );
\r
77 { proceso el subarbol izquierdo }
\r
78 AB_mover_cte( a, AB_derecha, error );
\r
82 { AB_mover_cte( a, AB_padre, error ); no hace falta }
\r
88 { me voy a la raiz y desde allí proceso todo }
\r
89 AB_mover_cte( a, AB_raiz, error );
\r
93 { recorrer todos los nodos del arbol procesando todos los elementos }
\r
94 { ORDEN de recorrido: POSORDEN, o sea, izquierda, derecha, nodo }
\r
95 PROCEDURE APL_AB_recorrer_rec_pos( a: AB_arbol);
\r
96 PROCEDURE recorrer_rec( a: AB_arbol );
\r
101 { proceso el subarbol izquierdo }
\r
102 AB_mover_cte( a, AB_izquierda, error );
\r
106 AB_mover_cte( a, AB_padre, error );
\r
108 { proceso el subarbol izquierdo }
\r
109 AB_mover_cte( a, AB_derecha, error );
\r
113 AB_mover_cte( a, AB_padre, error );
\r
115 { proceso el nodo corriente }
\r
116 AB_elem_cte( a, e);
\r
117 Procesar_Elem_Recorrido( e );
\r
122 { me voy a la raiz y desde allí proceso todo }
\r
123 AB_mover_cte( a, AB_raiz, error );
\r
127 { busca un elemento segun una clave determinada exhaustivamente (BUSQUEDA EXTERNA) }
\r
128 PROCEDURE APL_AB_buscar_externo( VAR a: AB_arbol; e: Tipo_Elem; VAR error: boolean );
\r
129 FUNCTION buscar_rec( VAR a: AB_arbol; e: Tipo_Elem): boolean;
\r
132 resultado: boolean;
\r
134 { proceso el nodo corriente }
\r
135 AB_elem_cte( a, e);
\r
136 resultado := Comparar_Elementos( e, d );
\r
139 { no era el buscado }
\r
140 { proceso el subarbol izquierdo }
\r
141 AB_mover_cte( a, AB_izquierda, error );
\r
144 resultado := buscar_rec( a, e );
\r
147 { proceso el subarbol izquierdo }
\r
148 AB_mover_cte( a, AB_padre, error );
\r
149 AB_mover_cte( a, AB_derecha, error );
\r
152 resultado := buscar_rec( a, e );
\r
155 AB_mover_cte( a, AB_padre, error );
\r
160 buscar_rec := resultado;
\r
163 { me voy a la raiz y desde allí proceso todo }
\r
164 AB_mover_cte( a, AB_raiz, error );
\r
165 error := buscar_rec( a, e );
\r