You are on page 1of 19

Estructuras de Datos

67

Captulo 6. RBOLES.
6.1 rboles binarios.
Un rbol binario es un conjunto finito de elementos, el cual est
vaco o dividido en tres subconjuntos separados:
El primer subconjunto contiene un elemento nico llamado
raz del rbol.
El segundo subconjunto es en s mismo un rbol binario y
se le conoce como subrbol izquierdo del rbol original.

Ricardo Ruiz Rodrguez

Estructuras de Datos

68

El tercer subconjunto es tambin un rbol binario y se le


conoce como subrbol derecho del rbol original.
El subrbol izquierdo o derecho puede o no estar vaco.
Cada elemento de un rbol binario se conoce como nodo del
rbol.
La Ilustracin 2 muestra una representacin de un rbol binario.
Ejercicio: Una lista podra ser un rbol binario? Una lista
doblemente enlazada? Por qu? Qu otros ejemplos podran o no
considerarse como rboles binarios?

Ricardo Ruiz Rodrguez

Estructuras de Datos

69

Ilustracin 2 rbol binario.


Si B es la raz de un rbol binario y D es la raz del subrbol
izquierdo/derecho, se dice que B es el padre de D y que D es el
hijo izquierdo/derecho de B.

Ricardo Ruiz Rodrguez

Estructuras de Datos

70

A un nodo que no tiene hijos, tal como A o C de la Ilustracin


2, se le conoce como hoja.
Un nodo n1 es un ancestro de un nodo n2 (y n2 es un
descendiente de n1) si n1 es el padre de n2 o el padre de algn
ancestro de n2.
Recorrer un rbol de la raz hacia las hojas se denomina
descender el rbol y al sentido opuesto ascender el rbol.
Un rbol estrictamente binario es aquel en el que cada nodo
que no es hoja, tiene subrboles izquierdo y derecho que no estn
vacos.
Ricardo Ruiz Rodrguez

Estructuras de Datos

71

Un rbol estrictamente binario con n hojas siempre contiene


2n-1 nodos.
El nivel de un nodo en un rbol binario se define del modo
siguiente:
1.La raz del rbol tiene el nivel 0.
2.El nivel de cualquier otro nodo en el rbol es uno ms que el
nivel de su padre.
La profundidad o altura de un rbol binario es el mximo
nivel de cualquier hoja en el rbol.

Ricardo Ruiz Rodrguez

Estructuras de Datos

72

Un rbol binario completo de profundidad p, es un rbol


estrictamente binario que tiene todas sus hojas en el nivel p.
6.2 Operaciones en rboles binarios.
Se aplican varias operaciones primitivas a un rbol binario.
Si p es un apuntador a un nodo nd de un rbol binario:
1.La funcin info(p) regresa el contenido de nd.
2.La funcin left(p) regresa un apuntador al hijo izquierdo de
nd.
3.La funcin right(p) regresa un apuntador al hijo derecho de
nd.
Ricardo Ruiz Rodrguez

Estructuras de Datos

73

4.La funcin father(p) regresa un apuntador al padre de nd.


5.La funcin brother(p) regresa un apuntador al hermano de nd.
6.La funcin isLeft(p) regresa true si nd es un hijo izquierdo de
algn otro nodo en el rbol, y false en caso contrario.
7.La funcin isRight(p) regresa true si nd es un hijo derecho de
algn otro nodo en el rbol, y false en caso contrario.
En la construccin de un rbol binario son tiles las
operaciones:

Ricardo Ruiz Rodrguez

Estructuras de Datos

74

1.makeTree(x) crea un nuevo rbol que consta de un nodo


nico con un campo de informacin x, y regresa un apuntador
a este nodo.
2.setLeft(p, x) crea un nuevo hijo izquierdo de node(p) con el
campo de informacin x.
3.setRight(p, x) crea un nuevo hijo derecho de node(p) con el
campo de informacin x.
6.3 Aplicaciones de rboles binarios.
Un rbol binario es una estructura de datos til cuando deben
tomarse decisiones en dos sentidos en cada punto de un proceso.

Ricardo Ruiz Rodrguez

Estructuras de Datos

75

Suponga que se desea encontrar todos los duplicados de una


lista de nmeros.
Considrese lo siguiente:
1.El primer nmero de la lista se coloca en un nodo que se ha
establecido como la raz de un rbol binario con subrboles
izquierdo y derecho vacos.
2.Cada nmero sucesivo en la lista se compara con el nmero
en la raz, aqu se tienen 3 casos:
a. Si coincide, se tiene un duplicado.
b.Si es menor, se examina el subrbol izquierdo.
Ricardo Ruiz Rodrguez

Estructuras de Datos

76

c. Si es mayor, se examina el subrbol derecho.


3.Si alguno de los subrboles esta vaco, el nmero no es un
duplicado y se coloca en un nodo nuevo en dicha posicin del
rbol.
4.Si el subrbol no est vaco, se compara el nmero con la raz
del subrbol y se repite todo el proceso con el subrbol.
Un rbol binario de bsqueda (ABB) no tiene valores
duplicados en los nodos y adems, tiene la caracterstica de que:
1.Los valores en cualquier subrbol izquierdo son menores que
el valor en su nodo padre.
Ricardo Ruiz Rodrguez

Estructuras de Datos

77

2.Los valores en cualquier subrbol derecho son mayores que el


valor en su nodo padre.
El rbol binario de bsqueda de la Ilustracin 3 fue construido
dada la siguiente secuencia de elementos:
14, 15, 4, 9, 7, 18, 3, 5, 16, 4, 20, 17
Ejercicio: realice la insercin de los elementos anteriores y
compare su rbol con el de la Ilustracin 3.
Una operacin comn es recorrer todo un rbol binario en un
orden especfico.

Ricardo Ruiz Rodrguez

Estructuras de Datos

78

Ilustracin 3 rbol binario de bsqueda.


A la operacin de recorrer un rbol de una forma especfica y
de numerar sus nodos, se le conoce como visitar el rbol
(procesar el valor del nodo).

Ricardo Ruiz Rodrguez

Estructuras de Datos

79

Ejercicio: Cul es el orden natural de recorrido de una lista?


Cul sera el orden natural de recorrido de un rbol?
En general, se definen tres mtodos de recorrido de un rbol
binario.
Antes de presentarlos se debern tener en mente las siguientes
consideraciones:
1.No se necesita hacer nada para un rbol binario vaco.
2.Todos los mtodos se definen recursivamente.
3.Siempre se recorren la raz y los subrboles, la diferencia
radica en el orden en que se visitan.
Ricardo Ruiz Rodrguez

Estructuras de Datos

80

Para recorrer un rbol binario no vaco en orden previo (orden


de primera profundidad) se ejecutan tres operaciones:
1.Visitar la raz.
2.Recorrer el subrbol izquierdo en orden previo.
3.Recorrer el subrbol derecho en orden previo.
Para recorrer un rbol binario no vaco en orden (orden
simtrico) se ejecutan tres operaciones:
1.Recorrer el subrbol izquierdo en orden.
2.Visitar la raz.

Ricardo Ruiz Rodrguez

Estructuras de Datos

81

3.Recorrer el subrbol derecho en orden.


Para recorrer un rbol binario no vaco en orden posterior se
ejecutan tres operaciones:
1.Recorrer el subrbol izquierdo en orden posterior.
2.Recorrer el subrbol derecho en orden posterior.
3.Visitar la raz.
Ejercicios a desarrollar con rboles:
1.Ordenamiento de nmeros e identificacin de elementos
repetidos almacenados en una lista.

Ricardo Ruiz Rodrguez

Estructuras de Datos

82

2.rboles de expresiones.
3.Determinar el nmero de nodos de un rbol binario.
4.La suma de todos los nodos.
5.La profundidad de un rbol binario.
6.Determinar si un rbol binario es o no estrictamente binario.
7.Determinar si un rbol binario es o no completo de nivel p.
6.4 Eliminacin de un ABB.
La eliminacin es el problema inverso a la insercin, sin
embargo, las cosas no son tan sencillas como para la insercin.

Ricardo Ruiz Rodrguez

Estructuras de Datos

83

Si el nodo que se pretende eliminar es un nodo hoja o un nodo


con un solo descendiente, la eliminacin es directa.
La dificultad radica en la eliminacin de un nodo con dos
descendientes. En este caso, el elemento eliminado ser substituido
por el descendiente ms a la derecha de su subrbol izquierdo (o
bien por el descendiente ms a la izquierda de su subrbol
derecho).
Obsrvese que estos nodos substitutos tienen a lo ms, un
descendiente.
Lo anterior queda mejor representado en la Ilustracin 4.
Ricardo Ruiz Rodrguez

Estructuras de Datos

Ilustracin 4. Eliminacin de un ABB.

Ricardo Ruiz Rodrguez

84

Estructuras de Datos

85

Ejercicio: En base al proceso descrito con anterioridad, inserte


en un ABB los nmeros: 9, 18, 10, 2, 6, 21, 8, 1, 7. Despus
elimine los nmeros 21, 18 y 9.
Ejercicio: Realice la implementacin de la eliminacin de
nodos en un ABB, considere los tres casos previstos:
1.Eliminacin de nodos hojas.
2.Eliminacin de nodos con un solo hijo.
3.Eliminacin de nodos con dos hijos (implemente el esquema
de substitucin del hijo ms a la derecha del subrbol
izquierdo).
Ricardo Ruiz Rodrguez