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 

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