El método
insertarNodo
de la clase
Arbol
(líneas 55 a 61) determina primero si el árbol está vacío. De ser
así, en la línea 58 se asigna un nuevo objeto
NodoArbol
, se inicializa el nodo con el entero que se insertará en el
árbol y se asigna el nuevo nodo a la referencia
raiz
. Si el árbol no está vacío, en la línea 60 se hace una llamada al
método
insertar
de
NodoArbol
(líneas 21 a 41). Este método utiliza la recursividad para determinar la posición
del nuevo nodo en el árbol e inserta el nodo en esa posición. En un árbol de búsqueda binaria, un nodo puede
insertarse solamente como nodo hoja.
El método
insertar
de
NodoArbol
compara el valor a insertar con el valor de datos en el nodo raíz. Si el
valor a insertar es menor que los datos del nodo raíz (línea 24), el programa determina si el subárbol izquierdo
está vacío (línea 27). De ser así, en la línea 28 se asigna un nuevo objeto
NodoArbol
, se inicializa con el entero
que se insertará y se asigna el nuevo nodo a la referencia
nodoIzquierdo
. En caso contrario, en la línea 30 se hace
una llamada recursiva a
insertar
para que se inserte el valor en el subárbol izquierdo. Si el valor a insertar es
mayor que los datos del nodo raíz (línea 32), el programa determina si el subárbol derecho está vacío (línea 35).
De ser así, en la línea 36 se asigna un nuevo objeto
NodoArbol
, se inicializa con el entero que se insertará y se
asigna el nuevo nodo a la referencia
nodoDerecho
. En caso contrario, en la línea 38 se hace una llamada recursiva
a
insertar
para que se inserte el valor en el subárbol derecho. Si el
valorInsertar
ya se encuentra en el árbol,
simplemente se ignora.
Los métodos
recorridoInorden
,
recorridoPreorden
y
recorridoPostorden
llaman a los métodos ayu-
dantes de
Arbol
llamados
ayudanteEnorden
(líneas 87 a 95),
ayudantePreorden
(líneas 70 a 78) y
ayudante-
Postorden
(líneas 104 a 112), respectivamente, para recorrer el árbol e imprimir los valores de los nodos. Los
métodos ayudantes en la clase
Arbol
permiten al programador iniciar un recorrido sin tener que pasar el nodo
raiz
al método. La referencia
raiz
es un detalle de implementación que no debe ser accesible para el progra-
mador. Los métodos
recorridoInorden
,
recorridoPreorden
y
recorridoPostorden
simplemente toman la
referencia privada
raiz
y la pasan al método ayudante apropiado para iniciar un recorrido del árbol. El caso base
para cada método ayudante determina si la referencia que recibe es
null
y, de ser así, regresa inmediatamente.
Figura 17.18
| Programa de prueba de un árbol binario. (Parte 2 de 2).
Insertando los siguientes valores:
17 54 3 30 95 69 85 88 16 30
Recorrido preorden
17 3 16 54 30 95 69 85 88
Recorrido inorden
3 16 17 30 54 69 85 88 95
Recorrido postorden
16 3 30 88 85 69 95 54 17
17.9 Árboles
737
17
for
(
int
i =
1
; i <=
10
; i++ )
18
{
19
valor = numeroAleatorio.nextInt(
100
);
20
System.out.print( valor +
" "
);
21
arbol.insertarNodo( valor );
22
}
// fin de for
23
24
System.out.println (
"\n\nRecorrido preorden"
);
25
arbol.recorridoPreorden();
// realiza recorrido preorden de arbol
26
27
System.out.println (
"\n\nRecorrido inorden"
);
28
arbol.recorridoInorden();
// realiza recorrido inorden de arbol
29
30
System.out.println (
"\n\nRecorrido postorden"
);
31
arbol.recorridoPostorden();
// realiza recorrido postorden de arbol
32
System.out.println();
33
}
// fin de main
34
}
// fin de la clase PruebaArbol
17_MAQ_CAP_17_DEITEL.indd737
4/19/081:30:10AM