Está en la página 1de 21

5.1. Concepto de rbol.

Los rboles representan las estructuras no-lineales y dinmicas de datos ms importantes en computacin. Dinmicas, puesto que la
estructura rbol puede cambiar durante la ejecucin de un programa. No lineales, puesto que a cada elemento del rbol pueden seguirle
varios elementos.
Un rbol es una estructura jerrquica aplicada sobre una coleccin de elementos u objetos llamados nodos; uno de los cuales es
conocido como raz. Adems se crea una relacin o parentesco entre los nodos dando lugar a trminos como padre, hijo, hermano,
antecesor, sucesor, ancestro, etc.
Formalmente se define un rbol de tipo T como una estructura homognea que es la concatenacin de un elemento de tipo T junto
con un nmero finito de rboles disjuntos, llamados subrboles. Una forma particular de rbol puede ser la estructura vaca.
Se utiliza la recursin para definir un rbol porque representa la forma ms apropiada y porque adems es una caracterstica
inherente a los mismos.
Los rboles tienen una gran variedad de aplicaciones. Por ejemplo, se pueden utilizar para representar frmulas matemticas, APRA
organizar adecuadamente la informacin, para registrar la historia de un campeonato de tenis, para construir un rbol genealgico, para
el anlisis de circuitos elctricos y para numerar los captulos y secciones de un libro.
Caractersticas y propiedades de los rboles
Las siguientes son caractersticas y propiedades ms importantes de los rboles en general:

1. Todo rbol que no es vaco, tiene un nico nodo raz.


2. Un nodo X es descendiente directo de un nodo Y, si el nodo X es apuntado por el nodo Y.
En este caso es comn utilizar la expresin X es hijo de Y.
3. Un nodo X es antecesor directo de un nodo Y, si el nodo X apunta al nodo Y. En este caso
es comn utilizar la expresin X es padre de Y.
4. Se dice que todos los nodos que son descendientes directos (hijos) de un mismo nodo
(padre), son hermanos.
5. Todo nodo que no tiene ramificaciones (hijos), se conoce con el nombre
de terminal u hoja.
6. Todo nodo que no es raz, ni terminal u hoja se conoce con el nombre de interior.
7. Grado es el nmero de descendientes directos de un determinado nodo. Grado del
rbol es el mximo grado de todos los nodos del rbol.
8. Nivel es el nmero de arcos que deben ser recorridos para llegar a un determinado nodo.
Por definicin la raz tiene nivel 1.
9. Altura del rbol es el mximo nmero de niveles de todos los nodos del rbol.
A continuacin se presenta un ejemplo para clarificar estos conceptos.
Ejemplo 6.1
Dado el rbol general de la figura 6.2, se hacen sobre l las siguientes consideraciones:

1. A es la raz del rbol.

1. B es hijo de A.
C es hijo de A.
D es hijo de B.
E es hijo de B.
e hijo de H.

1. A es padre de B.
B es padre de D.
D es padre de I.
C es padre de G.
H es padre de L.

1. B y C son hermanos.
D, E y F son hermanos.
G y H son hermanos.
J y K son hermanos.

1. I, E, J, K, G y L son nodos terminales u hojas.

1. B, D, F, C y H son nodos interiores.


1. El grado del nodo A es 2.
El
El
El
El

grado
grado
grado
grado

del
del
del
del

nodo
nodo
nodo
nodo

B es 3.
C es 2.
D es 1.
E es 0.

El grado del rbol es 3.

1. El nivel del nodo A es 1.


El
El
El
El

nivel
nivel
nivel
nivel

del
del
del
del

nodo
nodo
nodo
nodo

B es 2.
D es 3.
C es 2.
L es 4.

1. La altura del rbol es 4.


5.1.1 Clasificacin de rboles.

1.
2.
3.
4.
5.

rboles
rboles
rboles
rboles
rboles

Binarios
Balanceados
Multicaminos
B
B+

5.2 Arboles Binarios

Introduccin
Un rbol ordenado es aquel en el que las ramas de los nodos del rbol estn ordenadas. Los rboles ordenados de grado 2 son de
especial inters puesto que representan una de las estructuras de datos ms importantes en computacin, conocida como rboles
binarios.
En un rbol binario cada nodo puede tener como mximo dos subrboles y siempre es necesario distinguir entre el subrbol
izquierdo y el subrbol derecho.
Formalmente, se define un rbol binario de tipo T como una estructura homognea que es la concatenacin de un elemento de
tipo T, llamada raz, con dos rboles binarios disjuntos, llamados subrbol izquierdo y derecho de la raz. Una forma particular de rbol
binario puede ser la estructura vaca.
Los rboles binarios tienen mltiples aplicaciones. Se los puede utilizar para representar una estructura en la cual es posible tomar
decisiones con dos opciones en distintos puntos de un proceso, para representar un rbol genealgico (construido en forma ascendente
y donde se muestran los ancestros de un individuo dado), para representar la historia de un campeonato de tenis (construido en forma
ascendente y donde existe un ganador, 2 finalistas, 4 semifinalistas y as sucesivamente) y para representar expresiones algebraicas
construidas con operadores binarios. Esto slo por citar algunos de sus mltiples usos.
La figura 6.6 muestra tres diagramas correspondientes a una estructura de rbol binario. En la figura 6.6a) hay un rbol binario de
bsqueda, en la figura 6.6b) el rbol binario que representa la expresin (A*B) + (C/D)^3.5 y en la figura 6.6c) el rbol genealgico
correspondiente a uno de los autores de este libro.
Los rboles ordenados de grado mayor a 2 representan tambin estructuras importantes. Se conocen con el nombre de rboles
multicaminos.

RBOLES BINARIOS DISTINTOS, SIMILARES Y EQUIVALENTES


Dos rboles binarios son distintos cuando sus estructuras son diferentes. En la figura 6.7 se presentan dos ejemplos de rboles binarios
distintos.

Dos rboles binarios son similares cuando sus estructuras son idnticas, pero la informacin que contienen sus nodos difiere entre s.
En la figura 6.8 se presentan dos ejemplos de rboles binarios similares.

Por ltimo, los rboles binarios equivalentes se definen como aquellos que son similares y adems los nodos contienen la misma
informacin. La figura 6.9 contiene dos ejemplos de rboles binarios equivalentes.

A fin de clarificar los conceptos anteriores, vase el siguiente ejemplo.


Ejemplo 6.3
Dados los rboles binarios de la figura 6.10 se realizan las siguientes consideraciones:

En el rbol de la figura 6.10c) es distinto de los rboles de la figura 6.10a), 6.10b) y 6.10a).
Los rboles de la figura 6.10a), 6.10b) y 6.10d) son similares.
Los rboles de la figura 6.10a) y 6.10d) son equivalentes.

RBOLES BINARIOS COMPLETOS


Se define un rbol binario completo como un rbol en el que todos sus nodos, excepto los del ltimo nivel, tienen dos hijos; el subrbol
izquierdo y el subrbol derecho. En la figura 6.11 se presentan dos ejemplos de rboles binarios completos.

Los nodos del rbol binario sern representados como registros, que contendrn como mnimo tres campos. En un campo se almacenar
la informacin del nodo. Los dos restantes se utilizarn para apuntar los subrboles izquierdo y derecho respectivamente del nodo en
cuestin. Dado el siguiente nodo T:

ste tiene tres campos:


IZQ: campo donde se almacena la direccin del subrbol izquierdo del nodo T.
INFO: campo donde se almacena la informacin de inters del nodo. Normalmente en este campo y en el transcurso de este curso se
almacenar un valor simple: nmero o carcter. Sin embargo, en la prctica es comn almacenar en este campo registros, arreglos y
conjuntos.
DER: campo donde se almacena la direccin del subrbol derecho del nodo T.
La definicin de un rbol binario en lenguaje algortmico es como sigue:
Enlace = ^nodo
Nodo = registro

Izq: tipo enlace


Info: tipo dato
Der: tipo enlace
{ Fin de la definicin }

Nota: se utiliza el smbolo ^ para representar el concepto de dato tipo puntero.


Ejemplo 6.6
Considrese el rbol binario de la figura 6.19a), que representa la expresin algebraica (A * B) + (C / D) ^ 3.5. Su representacin en
memoria es como la presentada en la figura 6.19b).
Note que en la figura 6.19b) se utiliza el trmino NIL para referirse al rbol vaco.

5.2 Operaciones bsicas sobre Arboles binarios


5.2.1 Creacin.
Dar de alta el primer nodo del rbol con su liga derecha igual a nulo y liga izquierda igual a nulo.
Algoritmo de creacin
CREA(RAIZ)
LEER RAIZ.INFO
RAIZ.LIGAIZQ=NULL
RAIZ.LIGADER=NULL

5.2.2 Insercin
La insercin es una operacin que se puede realizar eficientemente en un rbol binario de bsqueda. La estructura crece conforme se
inserten elementos al rbol. Los pasos que deben realizarse para insertar un elemento a un rbol binario de bsqueda son los
siguientes:

1. Debe compararse la clave a insertar con la raz del rbol. Si es mayor, debe avanzarse hacia el
subrbol derecho. Si es menor, debe avanzarse hacia el subrbol izquierdo.
2. Repetir sucesivamente el paso 1 hasta que se cumpla alguna de las siguientes condiciones:
3. El subrbol derecho es igual a vaco, o el subrbol izquierdo es igual a vaco; en cuyo caso se
proceder a insertar el elemento en el lugar que le corresponde.
4. La clave que quiere insertarse es igual a la raz del rbol; en cuyo caso no se realiza la
insercin.

Ejemplo 6.12
Supngase que quieren insertarse las siguientes claves en un rbol binario de bsqueda que se encuentra vaco:
Claves: 120 87 43 65 140 99 130 22 56
Los resultados parciales que ilustran cmo funciona el procedimiento se presentan en la figura 6.22.

El algoritmo de insercin es el siguiente:

Algoritmo 6.7 Insercin

5.2.2 Eliminacin
BORRADO DE UN ARBOL BIANRIO DE BUSQUEDA
La operacin es un poco ms complicada que la de insercin. Esta consiste en eliminar un nodo del rbol sin violar los principios que
definen al rbol binario de bsqueda. Se deben distinguir los siguientes casos:
1. Si el elemento a borrar es terminal u hoja, simplemente se suprime.
2. Si el elemento a borrar tiene un solo descendiente, entonces se sustituye por ese descendiente.
3. Si el elemento a borrar tiene los dos descendientes, entonces se tiene que sustituir por el nodo que se encuentra ms a la izquierda
en el subrbol derecho o por el que se encuentra ms a la derecha en el subrbol izquierdo.
Adems debemos recordar que antes de eliminar un nodo, debe localizarse en el rbol. Para eso, se utilizara el algoritmo de bsqueda
anterior.
Ejemplo 6.14
Supngase que se desea eliminar las siguientes claves del rbol binario de bsqueda de la figura 6.23
claves 22 99 87 120 140 135 - 56
Los resultados parciales que ilustran como funciona el procedimiento se presenta en la figura 6.23:

Nota: Las flechas indican el elemento que quiere eliminarse


Figura 6.24 Eliminacin en un rbol binario de bsqueda. (Continua.) b) y c) corresponden al segundo caso; c) y d) corresponden al
tercer caso.
g) Estado final del rbol.
Algoritmo 6.9 Eliminacin

5.2.4 Recorridos sistemticos.


Recorridos en rboles binarios
Una de las operaciones ms importantes a realizar en un rbol binario es el recorrido de los mismos. Recorrer significa visitar los nodos
del rbol en forma sistemtica; de tal manera que todos los nodos del mismo sean visitados una sola vez. Existen tres formas diferentes
de efectuar el recorrido y todas ellas de naturaleza recursiva:

Recorrido en preorden

Visitar la raz
Recorrer el subrbol izquierdo
Recorrer el subrbol derecho

Recorrido en inorden

Recorrer el subrbol izquierdo


Visitar la raz
Recorrer el subrbol derecho

Recorrido en postorden

Recorrer el subrbol izquierdo


Recorrer el subrbol derecho
Visitar la raz

Algoritmo 6.1 Preorden

Nota: El trmino visitar puede ser remplazado por escribir la informacin del nodo. Esta aclaracin tambin es vlida para los otros tipos
de recorridos.

Algoritmo 6.2 Inorden

Algoritmo 6.3 Postorden

5.2.5 Balanceo
Con el objeto de mejorar el rendimiento en la bsqueda surgen los rboles balanceados. La idea central de stos es la de realizar
reacomodos o balanceos, despus de inserciones o eliminaciones de elementos. Estos rboles tambin reciben el nombre de AVL, en
honor a sus inventores, dos matemticos rusos, G.M. Adelson-Valskii y E.M. Landis.
Formalmente se define un rbol balanceado como un rbol binario de bsqueda, en el cual se debe cumplir la sig. Condicin: Para todo
nodo T del rbol, la altura de los subrboles izquierdo y derecho no deben diferir en ms de una unidad. Se muestran diagramas con
rboles balanceados.

INSERCION EN ARBOLES BALANCEADOS


Al insertar un elemento en un rbol balanceado deben distinguirse los sig. Casos:

1. Las ramas izquierdas (RI) y derecha (RD) del rbol tienen la misma altura (, por lo tanto:
1. Si se inserta un elemento en RI entonces HRI ser mayor a HRD.
2. Si se inserta un elemento en RD entonces HRD ser mayor a HRI.

Obsrvese que en cualquiera de los dos casos mencionados (1.1. y 1.2) no se viola el criterio de equilibrio del rbol.

2. Las ramas izquierdas (RI) y derecha (RD) del rbol tienen altura diferente (HRD HRI), por lo
tanto:
2.1. Supngase que HRI< HRD

1. Si se inserta un elemento en RI entonces HRI ser igual a HRD. Las ramas tienen la
misma altura, por lo que se mejora el equilibrio del rbol.
2. Si se inserta un elemento en RD entonces se rompe el criterio de equilibrio del rbol y
es necesario restructurarlo.
1. Supngase que HRI> HRD
1. Si se inserta un elemento en RI entonces se rompe el criterio de equilibrio del rbol y
es necesario restructurarlo.
2. Si se inserta un elemento en RD entonces HRD ser igual a HRI. Las ramas tienen la
misma altura, por lo que se mejora el equilibrio del rbol.

Ahora bien, para poder determinar si un rbol est balanceado o no, debe manejarse informacin relativa al equilibrio de cada nodo del
rbol. Surge as el concepto de factor de equilibrio de un nodo (FE) que se define como: la altura del subrbol derecho menos la altura
del subrbol izquierdo.

Los valores que puede tomar FE son : -1 o 1. Si FE llegar a tomar los valores de -2 o 2, entonces debera restructurarse el rbol. En la
sig. Fig. se presenta un rbol balanceado con el correspondiente FE para cada nodo del rbol.

El FE del nodo 65 es -1 puesto que la altura del subrbol derecho es igual a 2 y la altura del subrbol izquierdo igual a 3
FE 65 = 2-3 = -1
El FE del nodo 45 se calcula como:
FE 45 = 2-1 = 1
RESTRUCTURACION DEL RBOL BALANCEADO
El proceso de insercin en un rbol balanceado es sencillo pero con algunos detalles un poco complicados. Primero debe
seguirse el camino de bsqueda del rbol, hasta localizar el lugar donde hay que insertar el elemento. Luego se calcula su FE que
obviamente ser 0, y regresamos por el camino de bsqueda calculando el FE de los distintos nodos. Si en algunos de los nodos se viola
el criterio de equilibrio entonces debe restructurarse el rbol. El proceso termina al llegar a la raz del rbol, o cuando se realiza la
restructuracin del mismo; en cuyo caso no es necesario determinar el FE de los restantes nodos.
Restructurar el rbol significa rotar los nodos del mismo. La rotacin puede ser simple o compuesta. El primer caso involucra
dos nodos y el segundo caso afecta a 3. Si la rotacin es simple puede realizarse por las ramas derechas (DD) o por las ramas izquierdas
(II). Si la rotacin es compuesta puede realizarse por las ramas derechas e iquierdas (DI) o por las ramas izquierda y derecha (ID).