Professional Documents
Culture Documents
rbol binario
De Wikipedia, la enciclopedia libre En ciencias de la computacin, un rbol binario es una estructura de datos en la cual cada nodo siempre tiene 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. Usos comunes de los rboles binarios son los rboles binarios de bsqueda, los montculos binarios y Codificacin de Huffman.
ndice
1 Definicin de teora de grafos 2 Tipos de rboles binarios 3 Implementacin en C 4 Recorridos sobre rboles binarios 4.1 Recorridos en profundidad 4.1.1 Recorrido en preorden 4.1.2 Recorrido en postorden 4.1.3 Recorrido en enorden 4.2 Recorridos en amplitud (o por niveles) 4.3 Creacin de rboles a partir de los recorridos 5 Mtodos para almacenar rboles binarios 6 Codificacin de rboles n-arios como rboles binarios 7 Vase tambin 8 Enlaces externos
Un rbol binario sencillo de tamao 9, 4 niveles y altura 3 (altura = mximo nivel - 1), con un nodo raz cuyo valor es 2.
1/8
09/10/13
Un rbol binario lleno es un rbol en el que cada nodo tiene cero o dos hijos. Un rbol binario perfecto es un rbol binario lleno en el que todas las hojas (vrtices con cero hijos) estn a la misma profundidad (distancia desde la raz, tambin llamada altura). A veces un rbol binario perfecto es denominado rbol binario completo. Otros definen un rbol binario completo como un rbol binario lleno en el que todas las hojas estn a profundidad n o n-1, para alguna n. 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.
Implementacin en C
Un rbol binario puede declararse de varias maneras. Algunas de ellas son: Estructura con manejo de memoria dinmica, siendo el puntero que apunta al rbol de tipo tArbol:
t y p e d e fs t r u c tn o d o{ i n tc l a v e ; s t r u c tn o d o* i z d o ,* d c h o ; } N o d o ;
En el caso de un rbol binario casi-completo (o un rbol completo), puede utilizarse un sencillo arreglo de enteros con tantas posiciones como nodos deba tener el rbol. La informacin de la ubicacin del nodo en el rbol es implcita a cada posicin del arreglo. As, si un nodo est en la posicin i, sus hijos se encuentran en las posiciones 2i+1 y 2i+2, mientras que su padre (si tiene), se encuentra en la posicin truncamiento((i-1)/2) (suponiendo que la raz est en la posicin cero). Este mtodo se beneficia de un almacenamiento ms compacto y una mejor localidad de referencia, particularmente durante un recorrido en preorden. La estructura para este caso sera por tanto:
i n t r b o l [ N U M E R O _ D E _ N O D O S ] ;
09/10/13
Recorrido en preorden En este tipo de recorrido se realiza cierta accin (quizs simplemente imprimir por pantalla el valor de la clave de ese nodo) sobre el nodo actual y posteriormente se trata el subrbol izquierdo y cuando se haya concluido, el subrbol derecho. Otra forma para entender el recorrido con este metodo seria seguir el orden: nodo raz, nodo izquierda, nodo derecha. En el rbol de la figura el recorrido en preorden sera: 2, 7, 2, 6, 5, 11, 5, 9 y 4.
v o i dp r e o r d e n ( t A r b o l* a ) { i f( a! =N U L L ){ t r a t a r ( a ) ; p r e o r d e n ( a > h I z q u i e r d o ) ; p r e o r d e n ( a > h D e r e c h o ) ; } }
/ / R e a l i z au n ao p e r a c i ne nn o d o
Recorrido en postorden En este caso se trata primero el subrbol izquierdo, despus el derecho y por ltimo el nodo actual. Otra forma para entender el recorrido con este metodo seria seguir el orden: nodo izquierda, nodo derecha, nodo raz. En el rbol de la figura el recorrido en postorden sera: 2, 5, 11, 6, 7, 4, 9, 5 y 2.
v o i dp o s t o r d e n ( t A r b o l* a ) { i f( a! =N U L L ){ p o s t o r d e n ( a > h I z q u i e d o ) ; p o s t o r d e n ( a > h D e r e c h o ) ; t r a t a r ( a ) ; } }
/ / R e a l i z au n ao p e r a c i ne nn o d o
Recorrido en enorden
es.wikipedia.org/wiki/rbol_binario
3/8
09/10/13
En este caso se trata primero el subrbol izquierdo, despus el nodo actual y por ltimo el subrbol derecho. En un ABB este recorrido dara los valores de clave ordenados de menor a mayor. Otra forma para entender el recorrido con este metodo seria seguir el orden: nodo izquierda,nodo raz,nodo derecha. En el rbol de la figura el recorrido en enorden sera: 2, 7, 5, 6, 11, 2, 5, 4, 9. Esquema de implementacin:
v o i de n o r d e n ( t A r b o l* a ) { i f( a! =N U L L ){ e n o r d e n ( a > h I z q u i e r d o ) ; t r a t a r ( a ) ; e n o r d e n ( a > h D e r e c h o ) ; } }
/ / R e a l i z au n ao p e r a c i ne nn o d o
p r i n t f ( " % c , " ,n o d o _ a c t u a l > i n f o ) ;/ /s e" p r o c e s a "e ln o d od o n d ev ae lr e c o r r i d o ,e ne s t ec a s os i f( n o d o _ a c t u a l > i z q! =n u l l )/ /s ie x i s t e ,p o n e m o se lh i j oi z q u i e r d oe nl ac o l a c o l a _ e n q u e u e ( n o d o _ a c t u a l > i z q ,& c o l a _ n o d o s ) ; i f( n o d o _ a c t u a l > d e r! =n u l l )/ /s ie x i s t e ,p o n e m o se lh i j od e r e c h oe nl ac o l a c o l a _ e n q u e u e ( n o d o _ a c t u a l > d e r ,& c o l a _ n o d o s ) ; }/ /a lv a c i a r s el ac o l as eh a nv i s i t a d ot o d o sl o sn o d o sd e l r b o l }
es.wikipedia.org/wiki/rbol_binario 4/8
09/10/13
es.wikipedia.org/wiki/rbol_binario
5/8
09/10/13
En los recorridos tenemos 5 nodos a la izquierda del y a la derecha se encuentran 3 valores, entonces podemos crear los recorridos para el subrbol izquierdo y el subrbol derecho
Se sigue repitiendo el proceso hasta encontrar todos los nodos del rbol, en este punto la siguiente raz izquierda es el y la raz derecha el . Cuando se llegan a nodos en los que nicamente cuentan con una rama es necesario saber que rama es la derecha y cul es la izquierda (para algunos rboles con balanceo como los AVL), por ejemplo siguiendo la rama de la derecha partiendo de que el es la raz el recorrido inorden es entonces el siguiente nodo va a la derecha, no hay nodo a la izquierda, despus, los recorridos para el subrbol son: Preorden Inorden Postorden Finalmente el siguiente nodo se coloca a la izquierda del . Este mtodo es 100% efectivo cuando no existen nodos repetidos, cuando los nodos se repiten la complejidad aumenta para poder descubrir cul es el nodo raz en el recorrido inorden.
es.wikipedia.org/wiki/rbol_binario
6/8
09/10/13
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 (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 preoden transversal. Sin embargo, desperdicia mucho espacio en memoria.
09/10/13
El rbol binario puede ser pensado como el rbol original inclinado hacia los lados, con los bordes negros izquierdos representando el primer hijo y los azules representado los siguientes hermanos. Las hojas del rbol de la izquierda seran escritas en Lisp como:
( ( ( NO )IJ )CD( ( P )( Q ) )F( M ) )
Que se ejecutar en la memoria como el rbol binario de la derecha, sin ningn tipo de letras en aquellos nodos que tienen un hijo izquierdo.
Vase tambin
rbol (estructura de datos) rbol multirrama rbol binario de bsqueda rbol de Fibonacci Particin de espacio binario
Enlaces externos
rbol binario de bsqueda en PHP (http://mmengineer.blogspot.com/2007/10/aboles-binarios-debusqueda-php.html) Obtenido de http://es.wikipedia.org/w/index.php?title=rbol_binario&oldid=68709180 Categora: rboles (estructura) Esta pgina fue modificada por ltima vez el 30 jul 2013, a las 13:04. El texto est disponible bajo la Licencia Creative Commons Atribucin Compartir Igual 3.0; podran ser aplicables clusulas adicionales. Lanse los trminos de uso para ms informacin. Wikipedia es una marca registrada de la Fundacin Wikimedia, Inc., una organizacin sin nimo de lucro.
es.wikipedia.org/wiki/rbol_binario
8/8