You are on page 1of 17

ESTRUCTURAS DE DATOS

SEMANA 8

rboles binarios

Todos los derechos de autor son de la exclusiva propiedad de IACC o de los otorgantes de sus licencias. No est
permitido copiar, reproducir, reeditar, descargar, publicar, emitir, difundir, poner a disposicin del pblico ni 1
ESTE
utilizarDOCUMENTO
los contenidos paraCONTIENE LAdeSEMANA
fines comerciales 8
ninguna clase.
2
ESTE DOCUMENTO CONTIENE LA SEMANA 8
NDICE

OBJETIVO ESPECFICO............................................................................................................................... 4
INTRODUCCIN ...................................................................................................................................... 4
1. CONCEPTO DE RBOL BINARIO ................................................................................................... 4
1.1. ESTRUCTURA DE UN NODO EN UN RBOL BINARIO........................................................... 5
1.2. REPRESENTACIN DE RBOLES BINARIOS .......................................................................... 6
1.3. RBOLES BINARIOS DE BSQUEDA ..................................................................................... 6
2. OPERACIONES CON RBOLES BINARIOS DE BSQUEDA ............................................................ 7
2.1. BSQUEDA .......................................................................................................................... 7
2.2. INSERTAR ............................................................................................................................. 8
2.3. ELIMINAR........................................................................................................................... 11
2.4. RECORRIDO ....................................................................................................................... 12
3. APLICACIONES DE RBOLES BINARIOS...................................................................................... 14
3.1. RBOL AVL......................................................................................................................... 14
COMENTARIO FINAL .............................................................................................................................. 15
REFERENCIAS ..................................................................................................................................... 16

3
ESTE DOCUMENTO CONTIENE LA SEMANA 8
RBOLES BINARIOS

OBJETIVO ESPECFICO
Analizar la utilizacin y las operaciones asociadas a la estructura de datos rboles binarios.

INTRODUCCIN
Existen varios tipos de rboles, esta semana se estudiarn los rboles de grado 2, es decir, aquellos
cuyos nodos pueden tener como mximo dos descendientes.

Se estudiarn las representaciones de los rboles binarios y los rboles binarios de bsqueda as
como las operaciones y situaciones crticas que se pueden presentar al trabajar con los rboles
binarios de bsqueda.

1. CONCEPTO DE RBOL BINARIO


En un rbol binario cada nodo se compone de tres partes: a) un puntero hacia el hijo izquierdo
(hacia el 3 en la figura), b) la informacin que almacena (1 segn la figura) y c) un puntero hacia el
hijo derecho (hacia el 6 en la figura) (Lpez, 2012).

Fuente: https://goo.gl/OdzbHg

4
ESTE DOCUMENTO CONTIENE LA SEMANA 8
Por su parte, Ricardo Ruiz (s. f.) define un rbol binario como:

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.
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 y cada elemento de un rbol binario se
conoce como nodo del rbol.

Para conocer ms sobre este tema puede revisar el siguiente


video:

rbol binario

1.1. ESTRUCTURA DE UN NODO EN UN RBOL BINARIO

Puntero al hijo izquierdo Dato o informacin Puntero al hijo derecho

Los punteros a los hijos del nodo son variables


que hacen referencia a un dato por medio de
su direccin de memoria, es decir, el puntero
almacena como valor la direccin de memoria
de un dato, por lo cual se dice que apunta a
dicho dato (Lpez, 2012).

Fuente: https://goo.gl/WdzQGt

5
ESTE DOCUMENTO CONTIENE LA SEMANA 8
Como un rbol binario es una estructura de datos dinmica, no requiere establecer su tamao,
ya que su demanda de memoria crece conforme se agregan nodos, pero se libera cuando son
eliminados.

1.2. REPRESENTACIN DE RBOLES BINARIOS


Un rbol binario puede representarse
utilizando punteros o referencias que
definen la secuencia de nodos que contiene
uno para el hijo izquierdo (nodo 6 en la
figura) y otro para el hijo derecho (nodo 20
en la figura). Adems, es necesario
identificar el primer nodo lgico de rbol
conocido como raz, el cual carece de padre
o antecesor (ver 15 en la figura) (Lpez, Fuente: https://goo.gl/lsTx0n
2012).

1.3. RBOLES BINARIOS DE BSQUEDA


Un rbol binario de bsqueda (ABB) es un caso particular de rbol binario que tiene como finalidad
mejorar la eficiencia de bsqueda de un nodo y su caracterstica principal es que todos los hijos
izquierdos de un nodo son menores que l, mientras que sus hijos derechos son mayores (Lpez,
2012).

Por ejemplo, en el siguiente rbol binario se


puede observar que todos los nodos que
parten del nodo izquierdo de 20 son menores
que l, es decir, nodos 14, 8, 1, 18, 16 y 19; y
todos los hijos derechos son mayores, o sea,
nodos 44, 22 y 50.

Fuente: https://goo.gl/rygwlS

6
ESTE DOCUMENTO CONTIENE LA SEMANA 8
Formalmente se define un rbol binario de bsqueda de la siguiente manera:

Para todo nodo T del rbol se debe cumplir que todos los valores almacenados en el

subrbol izquierdo de T sean menores o iguales a la informacin guardada en el nodo T.

De forma similar, todos los valores almacenados en el subrbol derecho de T deben ser

mayores o iguales a la informacin guardada en el nodo T. Los valores a los que se hace

referencia en la definicin refieren al contenido del campo de informacin del nodo

(Cair y Guardati, 2006, p. 203).

2. OPERACIONES CON RBOLES BINARIOS DE BSQUEDA


El acomodo de nodos en un ABB depende de los enlaces controlados por el puntero hacia la raz y
los sucesivos punteros hacia los hijos de los nodos; por ello, cuando se insertan o eliminan nodos
de un ABB se deben modificar los punteros para mantener la secuencia lgica correcta. Lo anterior
significa que no necesariamente coincide el acomodo fsico de los nodos con la secuencia lgica
del recorrido del ABB, ya que los nodos se pueden insertar en cualquier orden; sin embargo, los
punteros se encargan de mantenerlos enlazados lgicamente (Lpez, 2012).

A continuacin se explicarn las operaciones bsicas que se pueden realizar con el ABB:

2.1. BSQUEDA
Esta operacin consiste en recorrer el ABB (partiendo de la raz) para localizar un nodo en
particular y consultar su informacin. Debido al ordenamiento lgico de los nodos, no siempre es
necesario recorrerlo completo para localizar el nodo deseado. De hecho, el objetivo principal de
un ABB es reducir a la mitad la cantidad de operaciones para encontrar un nodo, pues al iniciar las
comparaciones en el nodo raz y detectar si el nodo buscado es mayor o menor que l (para
considerar si se analiza el subrbol del lado izquierdo o del lado derecho) automticamente se
descarta el subrbol restante (Lpez, 2012).

7
ESTE DOCUMENTO CONTIENE LA SEMANA 8
Ejemplo:

Considere el siguiente rbol binario de bsqueda:

Si se quiere buscar el nodo 9, se inicia el


proceso en la raz (nodo 5) y se detecta que el 9
es mayor que l, ante lo cual se procede a
buscar en el subrbol derecho, movindose
hacia su hijo derecho desde el nodo 8:

Fuente: Lpez (2012, p. 330).

Con lo anterior, automticamente se descartan todos los nodos ubicados en el subrbol izquierdo
(puesto que son menores). El mismo proceso se ejecuta de manera repetida con los hijos del
subrbol correspondiente, al hacerlo, cada etapa del proceso de bsqueda reduce a la mitad la
cantidad de nodos a considerar (Lpez, 2012).

Si se implementa una bsqueda tradicional de un nodo en un conjunto que contiene n

elementos, al hacer la primera comparacin se tienen n-1 nodos pendientes de analizar;

sin embargo, al aplicar una bsqueda en ABB con n nodos, despus de revisar la raz, el

proceso se reduce a analizar n/2 nodos; con lo que se mejora la eficiencia del proceso

(Lpez, 2012, p. 331).

2.2. INSERTAR
Cuando se inserta un nuevo nodo a un ABB se debe crear el espacio de memoria para almacenarlo
y acomodarlo mediante los punteros correspondientes. Cuando se inserta un nodo, habr de
realizarse un recorrido para visitar cada nodo (NodoActual) y compararlo con el nuevo nodo que
se desea insertar (NuevoNodo), manteniendo el antecesor del nodo actual (padre). El recorrido se
inicia haciendo que el NodoActual sea la raz y su padre nulo. El proceso consiste en cambiar
sucesivamente de padre y aplicar en forma repetida el siguiente conjunto de pasos:

a) Si el puntero raz es nulo, entonces el NuevoNodo se convierte en la raz y termina el proceso.


b) Si el NuevoNodo es igual al NodoActual, entonces termina el proceso, porque se intenta
insertar un nodo duplicado y se descarta, ya que solo se permiten nodos nicos.

8
ESTE DOCUMENTO CONTIENE LA SEMANA 8
c) Si el NodoActual es nulo, entonces su padre apuntar al NuevoNodo. Si el NuevoNodo es
menor que el padre, entonces el NuevoNodo ser el nuevo hijo izquierdo del padre, si no,
entonces el NuevoNodo ser el nuevo hijo derecho del padre.
d) Si el NuevoNodo es menor que el NodoActual, entonces el NuevoNodo debe estar en el
subrbol izquierdo del NodoActual. El padre se convierte en el NodoActual y el NodoActual se
convierte en el hijo izquierdo del NodoActual y se regresa al paso b.
e) Si el NuevoNodo es mayor que el NodoActual, entonces el NuevoNodo debe estar en el
subrbol derecho del NodoActual. El padre se convierte en el NodoActual y el NodoActual se
convierte en el hijo derecho del NodoActual y se regresa al paso b.

INSERCIN EN UN ABB VACO

La insercin en un ABB vaco sucede cuando se inserta el primer nodo en un ABB (paso a).

Ejemplo: suponga que tiene un ABB vaco (raz Insercin del primer nodo de un ABB
nulo) y se inserta el nodo con el nmero 60.
En este caso, se crea el nodo y se convierte en
el elemento apuntado por la raz. El nuevo
nodo no tiene sucesores, por lo que sus
punteros a los hijos derecho e izquierdo se
dirigen a nulo (Lpez, 2012).

INSERCIN A LA IZQUIERDA

La insercin a la izquierda sucede cuando se inserta un nodo menor que el nodo actual, el cual
provoca avanzar hacia la izquierda del ABB.

Ejemplo: suponga que se inserta el nodo con el


nmero 40 en un rbol. En este caso se crea el
nodo y se convierte en el hijo izquierdo
apuntado por el nodo 60. El nuevo nodo no
tiene sucesores, por lo que sus apuntadores a
los hijos derecho e izquierdo se dirigen a nulo.
Cabe mencionar que este caso puede
presentarse sucesivamente para cada uno de
los nodos del ABB, es decir, no es exclusivo de
la raz (Lpez, 2012).

9
ESTE DOCUMENTO CONTIENE LA SEMANA 8
INSERCIN A LA DERECHA

La insercin a la derecha sucede cuando se inserta un nodo mayor que el nodo actual, el cual
provoca avanzar hacia derecha del ABB.

Ejemplo: suponga que se inserta el nodo con el


nmero 90 en un ABB. En este caso, se crea el
nodo y se convierte en el hijo derecho
apuntado por el nodo 60. El nuevo nodo no
tiene sucesores, por lo que sus apuntadores a
los hijos derecho e izquierdo se dirigen a nulo
(Lpez, 2012).

INSERCIN IZQUIERDADERECHA

La insercin izquierda-derecha sucede cuando se inserta un nodo mayor que el hijo izquierdo del
nodo actual, el cual provoca avanzar hacia la derecha del subrbol izquierdo del nodo actual.

Ejemplo: suponga que se inserta el nodo con el


nmero 50 en un ABB. En este caso, el nuevo
nodo es menor que 60 y mayor que 40, por lo
que se crea el nodo y se convierte en el hijo
derecho apuntado por el nodo 40. El nuevo
nodo no tiene sucesores, por lo que sus
apuntadores a los hijos derecho e izquierdo se
dirigen a nulo. Cabe mencionar que tal caso
puede presentarse sucesivamente para cada
uno de los nodos del ABB, es decir, no es
exclusivo para la raz (Lpez, 2012).

INSERCIN DERECHAIZQUIERDA

La insercin derecha-izquierda sucede cuando se inserta un nodo menor que el hijo derecho del
nodo actual, el cual provoca avanzar hacia la izquierda del subrbol derecho del nodo actual.

10
ESTE DOCUMENTO CONTIENE LA SEMANA 8
Ejemplo: suponga que se inserta el nodo con el
nmero 70 en un ABB. En este caso, el nuevo
nodo es mayor que 60 y mayor que 90, por lo
que se crea el nodo y se convierte en el hijo
izquierdo apuntado por el nodo 90. El nuevo
nodo no tiene sucesores, por lo que sus
apuntadores a los hijos derecho e izquierdo se
dirigen a nulo (Lpez, 2012).

2.3. ELIMINAR
Esta operacin borra un nodo de un ABB. Debido a que un ABB es dinmico, cuando se elimina un
nodo se libera espacio de memoria y se ajustan los punteros correspondientes para mantener la
secuencia lgica. El proceso de eliminar un nodo de un ABB es considerablemente ms complicado
que la insercin, debido a que al borrar un nodo con hijos requiere seleccionar otro nodo que lo
reemplace y mantenga la caracterstica principal (los hijos izquierdos son menores y los hijos
derechos mayores que su padre). A continuacin se presentan algunos ejemplos (Lpez, 2012):

Si se desea eliminar el nodo 59 del siguiente ABB:

Quedara de esta manera:

Sin embargo hay que considerar lo siguiente (Lancheros, Bentez y Gualtero, s. f.):

Si el nodo a borrar no tiene hijos, simplemente se libera el espacio que ocupa.

Si el nodo a borrar tiene un solo hijo, se aade como hijo de su padre, sustituyendo la posicin
ocupada por el nodo borrado.

11
ESTE DOCUMENTO CONTIENE LA SEMANA 8
Si el nodo a borrar tiene dos hijos se siguen los siguientes pasos: se busca el mximo de la rama
izquierda o el mnimo de la rama derecha, o se sustituye el nodo a borrar por el nodo
encontrado.

Para conocer ms a fondo sobre la eliminacin de nodos dentro de un


rbol binario puede revisar el siguiente enlace:

Eliminacin de nodos dentro de un ABB

2.4. RECORRIDO
Esta operacin visita todos los nodos del ABB para mostrar su contenido.

RECORRIDO PREORDEN

Un recorrido en preorden consiste en visitar sucesivamente y desplegar el dato del nodo actual,
luego su hijo izquierdo y despus su hijo derecho (Lpez, 2012).

12
ESTE DOCUMENTO CONTIENE LA SEMANA 8
Ejemplo: al recorrer el ABB en modo preorden,
la salida sera: 60, 40, 30, 20, 35, 50, 45, 90, 70,
65, 75 y 95.

RECORRIDO INORDEN

Un recorrido en inorden consiste en recorrer sucesivamente primero el hijo izquierdo del nodo
actual. Luego visitar y desplegar el dato del nodo actual y, por ltimo, recorrer sucesivamente el
hijo derecho (Lpez, 2012).

Ejemplo: de acuerdo al ABB anterior, al recorrer el rbol en modo inorden, la salida sera: 20, 30,
35, 40, 45, 50, 60, 65, 70, 75, 90 y 95.

RECORRIDO POSTORDEN

Un recorrido postorden consiste en recorrer sucesivamente primero el hijo izquierdo del nodo
actual, luego recorrer sucesivamente el hijo derecho y, por ltimo, visitar y desplegar el dato del
nodo actual (Lpez, 2012).

Ejemplo: siguiendo el ejercicio anterior, al recorrer el ABB en modo postorden, la salida sera: 20,
35, 30, 45, 50, 40, 65, 75, 70, 95, 90, 60.

13
ESTE DOCUMENTO CONTIENE LA SEMANA 8
3. APLICACIONES DE RBOLES BINARIOS
Hay varias aplicaciones de rboles binarios en la vida cotidiana, entre los que se menciona el
avance en cualquier torneo deportivo, donde solo hay un campen, dos finalistas y cuatro
semifinalistas, etc. (Lpez, 2012).

Resultados del campeonato mundial de ajedrez como rbol binario de bsqueda

Cuartos de final Semifinales Final

Fuente: http://goo.gl/R0LTVi

3.1. RBOL AVL


Un rbol binario est equilibrado si, para cada uno de sus nodos, ocurre que las alturas de sus dos
subrboles difieren como mucho en un nivel. Los rboles que cumplen esta condicin son
denominados a menudo rboles AVL (Lopez, Garca y Martn, s. f.).

Ejemplo: en la figura de la izquierda se muestra un rbol que es AVL, mientras que en la figura de
la derecha no lo es al no cumplirse la condicin en el nodo k.

Fuente: https://goo.gl/cTEr8P

14
ESTE DOCUMENTO CONTIENE LA SEMANA 8
COMENTARIO FINAL
La bsqueda en rboles binarios es un mtodo simple, dinmico y eficiente considerado como uno
de los fundamentales en informtica. De esta manera abren las puertas al conocimiento de las
estructuras de datos, pues ayudan a manejar un gran volumen de datos y dar gran aplicabilidad en
la indexacin de archivos, organizacin de bases de datos y bsqueda de informacin. Al brindar la
utilidad de ordenar la informacin separando el total en dos posibilidades (izquierda y
derecha) se reduce el conjunto de bsqueda a la mitad en cada paso con lo cual el proceso se
hace ms rpido y expedito, adems de optimizar el almacenamiento de datos.

Por tanto el conocimiento de rboles y rboles binarios proporciona el manejo de la informacin


imprescindible a la hora de enfrentarse a los diferentes problemas que podrn surgir en el uso de
las estructuras de datos y complementar su desarrollo en diversas actividades, entre ellas, la
programacin.

15
ESTE DOCUMENTO CONTIENE LA SEMANA 8
REFERENCIAS
Cair, O. y Guardati, S. (2006). Estructuras de datos. 3.a edicin. Mxico: McGraw-Hill.

Lancheros, L.; Bentez, A. y Gualtero, A. (s. f.). Eliminacin de nodos dentro de un rbol binario de

bsqueda. Recuperado de: https://goo.gl/BFMw30

Lpez, B. (2012). Estructuras de datos orientadas a objetos. 1. a edicin. Mxico: Alfaomega.

Lopez, E.; Garca, A. y Martn, A. (s. f.). rboles AVL. Universidad de Granada. Recuperado de:

https://goo.gl/cTEr8P

PARA REFERENCIAR ESTE DOCUMENTO, CONSIDERE:

IACC (2017). rboles binarios. Estructuras de Datos. Semana 8.

16
ESTE DOCUMENTO CONTIENE LA SEMANA 8
17
ESTE DOCUMENTO CONTIENE LA SEMANA 8

You might also like