Professional Documents
Culture Documents
Un recorrido de un rbol binario requiere que cada nodo del rbol sea procesado o visitado una vez y solo una vez en una secuencia predeterminada. Existen 2 enfoques general para la secuencia de recorrido: profundidad y anchura.
Se dice que es un proceso que exige un camino desde la raz atraves de un hijo, al descendiente mas lejano del primero hijo antes de proseguir a un segundo hijo. Todos los descendientes de un hijo se procesan antes del siguiente.
Se dice que el proceso se realiza horizontalmente desde la raz a todos sus hijos, a continuacin a los hijos e sus hijos y as sucesivamente hasta que todos los nodos han sido procesados. Cada nivel se procesa totalmente antes de que comience el siguiente nivel.
El recorrido de un rbol supone visitar cada nodo solo una vez. Dado un rbol binario que consta de una raz, un subrbol izquierdo y un subrbol derecho, pueden definir 3 tipos de secuencias de recorrido en profundidad.
a) Recorrido Pre orden b) Recorrido en Orden c) Recorrido Postorden
El recorrido pre orden (NID) con lleva los siguientes pasos, en los que la raz va antes que los subrboles: 1. Recorrer el raz (N) 2. Recorrer el subrbol izquierdo (I) en pre orden 3. Recorrer el subrbol derecho (D) en pre orden.
Subrbol izquierdo
Subrbol derecho
Primero, se procesa la raz de los arboles, a continuacin el subrbol izquierdo y a continuacin el subrbol derecho. Para procesar el subrbol izquierdo, se hace una llamada recursiva al procedimiento pre orden y luego se hace lo mismo con el subrbol derecho
Si T no es vaco entonces inicio ver los datos en el raz de T Pre orden (subrbol izquierdo del raz de T) Pre orden (subrbol derecho del raz de T) fin
Regla: El recorrido pre orden, el nodo raz se procesa antes que los subrboles izquierdo y derecho
A 1 B C 5 E F G 7
2
D
Camino A,B,D,E,C,F,G
El recorrido en orden (IND) procesa el subrbol izquierdo, despus el raz y a continuacin el subrbol derecho. El significado de in es que la raz se procesa entre los subrboles. Si el rbol no esta vaco, el mtodo implica los siguientes pasos: 1. Recorrer el subrbol izquierdo (I) en inorden 2. Visitar el nodo raz (N) 3. Recorrer el subrbol derecho (D) en inorden
Subrbol izquierdo
Subrbol derecho
Si T no es vaco entonces inicio En orden (subrbol izquierdo del raz T) ver los datos en el raz de T En orden (subrbol derecho del raz de T) fin
Regla: En el recorrido en orden, el nodo raz se procesa a continuacin del subrbol izquierdo y despus del derecho.
A 4 B C 6 E F G 7
2
D
Camino D,B,E,A,F.C,G
El recorrido Postorden (IDN) procesa nodo raz (post), despus de que los subrboles izquierdo y derecho se han procesado. Se comienza situndose en la hoja mas a la izquierda y se procesa. A continuacin se procesa su subrbol derecho. Por ultimo se procesa el nodo raz. Las etapas del algoritmo son: 1. Recorrer el subrbol izquierdo (I) en Postorden 2. Recorrer el subrbol derecho (D) en inorden 3. Visitar el nodo raz (N)
Subrbol izquierdo
Subrbol derecho
Si T no es vaco entonces inicio Post orden (subrbol izquierdo del raz T) Post orden (subrbol derecho del raz de T) ver los datos en el raz de T fin
Regla: En el recorrido post orden, el nodo raz se procesa despus del subrbol izquierdo y despus del derecho.
A 7 B C 6 E F G 5
3
D
Camino D,E,B,F,G,C,A
+ c
+ b a
La profundidad de un rbol binario es una caracterstica que se necesita conocer con frecuencia durante el desarrollo de una aplicacin con arboles.
Un rbol binario de bsqueda es aquel que dado un nodo, todos los datos del subrbol izquierdo son menores que los datos de ese nodo, mientras que todos los datos del subrbol derecho son mayores que sus propios datos.
41
85
30 menor que 55 41 mayor que 30 75 mayor que 55 85 mayor que 75 4 menor que 30
10
Un rbol binario de bsqueda se puede utilizar cuando se necesita que la informacin se encuentre rpidamente. Un ejemplo de rbol binario que se estudia a continuacin es el que cada nodo contiene informacin relativa a una persona. Cada persona se identifica con su nombre y el numero de matricula en su universidad. (dato entero)
Creacin de un nodo
El constructor del nodo tiene como entrada los datos correspondientes a la persona que se presenta, es decir, a un numero de matricula y el nombre. Inicializa las referencias a rama izquierda y derecha null, de tal forma que el nodo se crea como hoja. Public Nodo(int mat, String nom) { numMat = mat; nombre = nom; izqda = drcha = null; }