Professional Documents
Culture Documents
5to. Semestre
Seccin A
Programacin 3
Arboles Binarios
Concepto
No es un rbol: Hay dos partes sin conectar (AB y CDE), luego existe ms de
una raz.
Otros conceptos:
Descendiente: Un nodo accesible por descenso repetido de padre a hijo.
Ascendiente: Un nodo accesible por ascenso repetido de hijo a padre.
Brazo: La conexin entre un nodo y otro.
Profundidad: La profundidad de un nodo es el nmero de aristas desde la raz
del rbol hasta un nodo.
Bosque: Un bosque es un conjunto de rboles n 0 disjuntos.
Arboles Binarios
Un rbol binario es una estructura de datos en la cual cada nodo puede tener
un hijo izquierdo y un hijo derecho. No pueden tener ms de dos hijos (de ah
el nombre "binario"). Si algn hijo tiene como referencia a null, es decir que no
almacena ningn dato, entonces este es llamado un nodo externo. En el caso
contrario el hijo es llamado un nodo interno.
Tambin podemos deducir que los rboles binarios son estructuras de datos muy
similares a las listas doblemente enlazadas, en el sentido que tienen dos punteros que
apuntan a otros elementos, pero no tienen una estructura lgica de tipo lineal o
secuencial como aquellas, sino ramificada. Tienen aspecto de rbol, de ah su nombre.
Un rbol binario es una estructura de datos no lineal en la que cada nodo puede
apuntar a uno o mximo a dos nodos. Tambin se suele dar una definicin recursiva que
indica que es una estructura compuesta por un dato y dos rboles. Esto son
definiciones simples. Este tipo de rbol se caracteriza porque tienen un vrtice
principal y de l se desprende dos ramas. La rama izquierda y la rama derecha a las
que tambin se les conocen como subrboles. Una representacin grfica de la
estructura general de un rbol binario se puede visualizar en la imagen1 que presente
a continuacin.
La rama izquierda y la derecha, tambin son dos rboles binarios. El Vrtice principal
se denomina raz y cada una de las ramas se puede denominar como subrbol izquierdo
y subrbol derecho.
Nodo hijo: cualquiera de los nodos apuntados por uno de los nodos del rbol. En la
grfica de la imagen 2, se tiene, D y M son hijos de A.
Nodo padre: nodo que contiene un puntero al nodo actual. En el ejemplo, el nodo A es
padre de D y D.
Los rboles con los que trabajar tienen otra caracterstica importante: cada nodo
slo puede ser apuntado por otro nodo, es decir, cada nodo slo tendr un padre. Esto
hace que estos rboles estn fuertemente jerarquizados, y es lo que en realidad les
da la apariencia de rboles.
Orden: es el nmero potencial de hijos que puede tener cada elemento de rbol. De
este modo, se dice que un rbol en el que cada nodo puede apuntar a otros dos es de
orden dos, si puede apuntar a tres ser de orden tres y as sucesivamente.
Grado: el nmero de hijos que tiene el elemento con ms hijos dentro del rbol. En el
rbol del ejemplo en la imagen 2, el grado es dos, ya que tanto A como D y M tienen
dos hijos, y no existen elementos con ms de dos hijos.
Nivel: se define para cada elemento del rbol como la distancia a la raz, medida en
nodos. El nivel de la raz siempre ser cero y el de sus hijos uno. As sucesivamente. En
el ejemplo de la imagen 2, el nodo D tiene nivel 1, el nodo L tiene nivel 2.
Altura: la altura de un rbol se define como el nivel del nodo de mayor nivel. Como
cada nodo de un rbol puede considerarse a su vez como la raz de un rbol, tambin
se puede hablar de altura de ramas.
Usos Comunes:
Usos comunes de los rboles binarios son los rboles binarios de bsqueda,
los montculos binarios y Codificacin de Huffman.
e = i+1
Propiedad 2:
In = suma del largo de los caminos desde la raz a cada nodo interno (largo de
caminos internos).
En = suma del largo de los caminos desde la raz a cada nodo externo (largo de
caminos externos).
Se tiene que:
En = In+2n
Propiedad 3:
Bn?
Un rbol binario es un rbol en el que ningn nodo puede tener ms de dos subrboles. En
un rbol binario cada nodo puede tener cero, uno o dos hijos (subrboles). Se conoce el
nodo de la izquierda como hijo izquierdo y el nodo de la derecha como hijo derecho.
Existen tipos de rboles binarios que suelen usarse para fines especficos, como:
Definicin
Para una fcil comprensin queda resumido en que es un rbol binario que cumple que el
subrbol izquierdo de cualquier nodo (si no est vaco) contiene valores menores que el que
contiene dicho nodo, y el subrbol derecho (si no est vaco) contiene valores mayores. Para
estas definiciones se considera que hay una relacin de orden establecida entre los elementos
de los nodos. Que cierta relacin est definida, o no, depende de cada lenguaje de
programacin. De aqu se deduce que puede haber distintos rboles binarios de bsqueda para
un mismo conjunto de elementos.
La altura h en el peor de los casos es siempre el mismo tamao que el nmero de elementos
disponibles. Y en el mejor de los casos viene dada por la expresin.
Un rbol binario de bsqueda no deja de ser un caso particular de rbol binario, as usando la
siguiente especificacin de rbol binario en maude:
Podemos hacer la siguiente definicin para un rbol binario de bsqueda (tambin en maude):
Fth ORDEN is
Protecting BOOL.
Sort Elt.
*** Operations
op _<_ : Elt Elt -> Bool .
End fth
Para que un rbol binario pertenezca al tipo rbol binario de bsqueda debe cumplir la
condicin de ordenacin siguiente que ira junto al mdulo ARBOL-BINARIO-BUSQUEDA:
Var R: X$Elt.
Vars INV DNV: ABBNV{X}.
Vars I D: ABB{X}.
Mb crear: ABB {X}.
Mb arbolBin(R, crear, crear): ABBNV {X}.
Cmb arbolBin(R, INV, crear): ABBNV {X} if R > Max (INV).
Cmb arbolBin(R, crear, DNV): ABBNV {X} if R < min (DNV).
Cmb arbolBin(R, INV, DNV): ABBNV{X} if (R > max (INV)) and (R < min (DNV)) .
Ops min max: ABBNV{X} -> X$Elt.
Eq min (arbolBin(R, crear, D)) = R.
Eq min (arbolBin(R, INV, D)) = min (INV).
Eq Max (arbolBin(R, I, crear)) = R.
Eq Max (arbolBin(R, I, DNV)) = Max (DNV).
rbol Fibonacci
Se llama rbol de Fibonacci a una variante de rbol binario con la propiedad que el orden
de un nodo se calcula como la sucesin de Fibonacci.
El rbol de Fibonacci se define de la siguiente manera:
El rbol nulo (no contiene ningn nodo) es de orden 0.
El rbol que consta de un nico nodo es de orden 1.
Para n > 1, el rbol de Fibonacci de orden n consta de un nodo raz con el rbol de
Fibonacci de orden n-1 como hijo izquierdo y el rbol de Fibonacci de orden n-2
como hijo derecho.
Dado que este tipo de rbol es un caso particular de un rbol AVL, ya que el factor de
equilibrio de todo nodo es -1, un rbol de Fibonacci es balanceado con altura O (log n).
Formas de Recorrer un rbol binario
Los rboles binarios, son estructuras de datos no lineales, son considerados como
estructuras jerrquicas y como tal su forma de recorrerlos difiere sustancialmente
en comparacin con las listas enlazadas que son estructuras de datos de tipo lineal. En
ese orden de ideas, el recorrido de un rbol binario se lleva a cabo en tres sentidos:
Preorden, Inorden y Postorden. A continuacin explicaremos cada uno:
Recorrido en Preorden:
Recorrer un rbol en preorden consiste en primer lugar, examinar el dato del nodo
raz, posteriormente se recorrer el subrbol izquierdo en preorden y finalmente se
recorre el subrbol derecho en preorden. Esto significa que para cada subrbol se
debe conservar el recorrido en preorden, primero la raz, luego la parte izquierda y
posteriormente la parte derecha.
Imagen. Representacin grfica del rbol binario y su recorrido en preorden
Veamos cmo se realiza el recorrido paso a paso segn la grfica del rbol de la
imagen:
El recorrido inicia con el subrbol izquierdo, el primer nodo a visitar es la raz que es
el nodo 10, luego se visita el subrbol izquierdo con el nodo 5, posteriormente el 3,
luego el nodo 1, sigue con el nodo 4, pasamos al nodo 7 y luego el 9.
Continuamos con el recorrido del subrbol derecho en preorden, con la visita
del nodo 15, luego el 14, se contina con el 17, se visita el 16 y se finaliza con la
visita del nodo 20.
El resultado completo del recorrido en preorden para el rbol de la imagen es: 10 5
3 1 4 7 9 15 14 17 -16 20, Tal como se muestra en la imagen.
Recorrido en Inorden
Recorrer un rbol en Inorden consiste en primer lugar en recorrer el subrbol
izquierdo en Inorden, luego se examina el dato del nodo raz, y finalmente se recorre
el subrbol derecho en Inorden. Esto significa que para cada subrbol se debe
conservar el recorrido en Inorden, es decir, primero se visita la parte izquierda, luego
la raz y posteriormente la parte derecha.
Imagen. Representacin grfica del rbol binario y su recorrido en Inorden
Veamos cmo se realiza el recorrido paso a paso segn la grfica del rbol de la
imagen:
El recorrido inicia con el subrbol izquierdo, el primer nodo a visitar es el 3 luego se
visita el 5 y posteriormente el 7, con esto se garantiza que el recorrido del subrbol
izquierdo se hizo en Inorden.
Finalizado el recorrido del subrbol izquierdo se visita el nodo de la raz, que para
este caso es el nmero 10.
Solo queda recorrer el subrbol derecho en Inorden, es decir se visita el 11 luego el
12 y se finaliza con la visita del nodo 15
El resultado completo del recorrido en Inorden para el rbol de la imagen es:3 5
7 10 11 12 15, Tal como se muestra en la imagen.
Recorrido en Postorden:
Recorrer un rbol en Postorden consiste en primer lugar en recorrer el subrbol
izquierdo en Postorden, luego se recorre el subrbol derecho en Postorden y
finalmente se visita el nodo raz. Esto significa que para cada subrbol se debe
conservar el recorrido en Postorden, es decir, primero se visita la parte izquierda,
luego la parte derecha y por ltimo la raz.
Imagen. Representacin grfica del rbol binario y su recorrido en postorden
Veamos cmo se realiza el recorrido paso a paso segn la grfica del rbol de la
imagen.
El recorrido inicia con el subrbol izquierdo, el primer nodo a visitar es el 3 luego se
visita el 7 y posteriormente el 5 que es la raz, con esto se garantiza que el recorrido
del subrbol izquierdo se hizo en Postorden. Finalizado el recorrido del subrbol
izquierdo se inicia la visita al subrbol derecho en Postorden, es decir, se visita el 11
luego el 15 y se finaliza con la visita del nodo 12 que sera la raz de este subrbol.
Solo queda recorrer la raz del rbol que para este caso es el nmero 10.
El resultado completo del recorrido en Postorden para el rbol de la imagen es:
3 7 5 11 15 12 10 Tal como se muestra en la imagen.
Mtodos para almacenar rboles Binarios
Los rboles binarios pueden ser construidos a partir de lenguajes de programacin de
varias formas. En un lenguaje con registros y referencias, los rboles binarios son
construidos tpicamente con una estructura de nodos y punteros en la cual se
almacenan datos, cada uno de estos nodos tiene una referencia o puntero a un nodo
izquierdo y a un nodo derecho denominados hijos. En ocasiones, tambin contiene un
puntero a un nico nodo. Si un nodo tiene menos de dos hijos, algunos de los punteros
de los hijos pueden ser definidos como nulos para indicar que no dispone de dicho
nodo. En la figura adjunta se puede observar la estructura de dicha implementacin.
Los rboles binarios tambin pueden ser almacenados como una estructura de datos
implcita en vectores, y si el rbol es un rbol binario completo, este mtodo no
desaprovecha el espacio en memoria. Tomaremos como notacin la siguiente: si un nodo
tiene un ndice i, sus hijos se encuentran en ndices 2i + 1 y 2i + 2, mientras que sus
padres (si los tiene) se encuentra en el ndice {\displaystyle \left\lfloor {\frac {i-
1}{2}}\right\rfloor }(partiendo de que la raz tenga ndice cero). Este mtodo tiene
como ventajas el tener almacenados los datos de forma ms compacta y por tener una
forma ms rpida y eficiente de localizar los datos en particular durante un preorden
transversal. Sin embargo, desperdicia mucho espacio en memoria.
Conclusin
http://www.utm.mx/~rruiz/cursos/ED/material/ABB.pdf
http://www.monografias.com/trabajos92/arboles-binario/arboles-binario.shtml
http://www6.uniovi.es/usr/cesar/Uned/EDA/Apuntes/TAD_apUM_04.pdf