Una exploracin algo amplia en el campo de la ciencia de la computacin nos
lleva a situaciones en que las representaciones lineales son inadecuadas, tanto en sentido conceptual como prctico. Un paso importante lo representan los rboles binarios, y el siguiente vendr dado con el estudio de la nocin general de rbol. En captulos posteriores, lo extenderemos hasta llegar a los grafos. Un rbol impone una estructura jerrquica sobre una coleccin de objetos. Ejemplos claros de utiliacin de rboles se presentan tanto dentro como fuera del rea de computacin !ndices de libros, rboles genealgicos, etc."# en $nformtica constituyen una de las estructuras ms utiliadas, con aplicaciones que van desde los rboles sintcticos utiliados para la representacin y%o interpretacin de t&rminos de un lenguaje o expresiones aritm&ticas, pasando por los arboles de activacin de procedimientos recursivos, hasta la representacin de datos que se desea mantener ordenados con un tiempo de acceso relativamente bajo. En general, se usarn rboles siempre que se quiera representar informacin jerarquiada, cuando esta converja en un solo punto ARBOL En programacin, una estructura de datos es una forma de organiar un conjunto de datos elementales con el objetivo de facilitar su manipulacin. Un dato elemental es la mnima informacin que se tiene en un sistema. Una estructura de datos define la organiacin e interrelacin de &stos y un conjunto de operaciones que se pueden realiar sobre ellos. 'as operaciones bsicas son( )lta, adicionar un nuevo valor a la estructura. *aja, borrar un valor de la estructura. *+squeda, encontrar un determinado valor en la estructura para realiar una operacin con este valor, en forma ,E-UE.-$)' o *$.)/$0 !siempre y cuando los datos est&n ordenados"... OPERACIONES DE ARBOLES 'as operaciones comunes en rboles son( Enumerar todos los elementos. *uscar un elemento. 1ado un nodo, listar los hijos !si los hay". *orrar un elemento. Eliminar un subrbol !algunas veces llamada podar". )2adir un subrbol !algunas veces llamada injertar". Encontrar la ra de cualquier nodo. ARBOL BINARIO En ciencias de la computacin, un rbol binario es una estructura de datos en la cual cada nodo siempre tiene un hijo iquierdo y un hijo derecho. .o pueden tener ms de dos hijos !de ah el nombre 3binario3". ,i alg+n hijo tiene como referencia a null, es decir que no almacena ning+n 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 b+squeda, los montculos binarios y -odificacin de 4uffman. TIPOS DE ARBOL BINARIOS Un rbol binario es un rbol con ra! en el que cada nodo tiene como mximo dos hijos. Un rbol binario lleno es un rbol en el que cada nodo tiene cero o dos hijos. Un rbol binario per"ecto es un rbol binario lleno en el que todas las #ojas !v&rtices con cero hijos" estn a la misma profundidad !distancia desde la ra!, tambi&n llamada altura" ARBOL BINARIO DE BUS$UEDA Es un tipo particular de rbol binario que presenta una estructura de datos en forma de rbol usada en informtica. Un rbol binario de b+squeda !)**" es un rbol binario definido de la siguiente forma( 5ara una fcil comprensin queda resumido en que es un rbol binario que cumple que el subrbol iquierdo 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. 5ara estas definiciones se considera que hay una relacin de orden establecida entre los elementos de los nodos. 6ue cierta relacin este definida, o no, depende de cada lenguaje de programacin. 1e aqu se deduce que puede haber distintos rboles binarios de b+squeda para un mismo conjunto de elementos. El inter&s de los rboles binarios de b+squeda radica en que su recorrido en inorden proporciona los elementos ordenados de forma ascendente y en que la b+squeda de alg+n elemento suele ser muy eficiente. 1ependiendo de las necesidades del usuario que trate con una estructura de este tipo se podr permitir la igualdad estricta en alguno, en ninguno o en ambos de los subrbols que penden de la ra. 5ermitir el uso de la igualdad provoca la aparicin de valores dobles y hace la b+squeda ms compleja. B%s&ueda 'a b+squeda consiste acceder a la ra del rbol, si el elemento a localiar coincide con &ste la b+squeda ha concluido con &xito, si el elemento es menor se busca en el subrbol iquierdo y si es mayor en el derecho. ,i se alcana un nodo hoja y el elemento no ha sido encontrado se supone que no existe en el rbol. -abe destacar que la b+squeda en este tipo de rboles es muy eficiente, representa una funcin logartmica. Eje'plo En Pascal( 7unction busqueda!8()*/, y( integer"()*/ begin if !89nil" or !:8.rai9y" then busqueda(98# else if !:8.rai;y" then busqueda(9busqueda!:8.dch,y"# else busqueda(9busqueda!:8.iq,y"# end# )rbol binario de b%s&ueda auto*balanceable En ciencias de la computacin, un rbol binario de b+squeda auto<balanceable o equilibrado es un rbol binario de b+squeda que intenta mantener su altura, o el n+mero de niveles de nodos bajo la ra, tan peque2os como sea posible en todo momento, automticamente. Esto es importante, ya que muchas operaciones en un rbol de b+squeda binaria tardan un tiempo proporcional a la altura del rbol, y los rboles binarios de b+squeda ordinarios pueden tomar alturas muy grandes en situaciones normales, como cuando las claves son insertadas en orden. =antener baja la altura se consigue habitualmente realiando transformaciones en el rbol, como la rotacin de rboles, en momentos clave. Inserci+n 'a insercin es similar a la b+squeda y se puede dar una solucin tanto iterativa como recursiva. ,i tenemos inicialmente como parmetro un rbol vaco se crea un nuevo nodo como +nico contenido el elemento a insertar. ,i no lo est, se comprueba si el elemento dado es menor que la ra del rbol inicial con lo que se inserta en el subrbol iquierdo y si es mayor se inserta en el subrbol derecho. 1e esta forma las inserciones se hacen en las hojas. -omo en el caso de la b+squeda puede haber varias variantes a la hora de implementar la insercin en el 8)1 !8ipo )bstracto de 1atos", y es la decisin a tomar cuando el elemento !o clave del elemento" a insertar ya se encuentra en el rbol, puede que &ste sea modificado o que sea ignorada la insercin. Borrado o Eli'inaci+n 'a operacin de borrado no es tan sencilla como las de b+squeda e insercin. Existen varios casos a tener en consideracin( *orrar un nodo sin hijos nodo hoja( simplemente se borra y se establece a nulo el apuntador de su padre. .odo a eliminar >? *orrar un nodo con un subrbol hijo( se borra el nodo y se asigna su subrbol hijo como subrbol de su padre. .odo a eliminar >@ *orrar un nodo con dos subrboles hijo( la solucin est en reemplaar el valor del nodo por el de su predecesor o por el de su sucesor en inorden y posteriormente borrar este nodo. ,u predecesor en inorden ser el nodo ms a la derecha de su subrbol iquierdo !mayor nodo del subarbol iquierdo", y su sucesor el nodo ms a la iquierda de su subrbol derecho !menor nodo del subarbol derecho". En la siguiente figura se muestra cmo existe la posibilidad de realiar cualquiera de ambos reemplaos( .odo a eliminar AB El siguiente algoritmo en - realia el borrado en un )**. El procedimiento reemplazar busca la mayor clave del subrbol iquierdo y la asigna al nodo a eliminar. Eje'plo De rbol en pascal Procedure Borrar(var T:ABR, x:ABR) var aBorrar:ABR; anterior:ABR; actual:ABR; hijo:ABR; begin if (^x.izqnil) or (^x.!chnil) then aBorrar:x; el"e aBorrar:"uce"or(T,x); actual:T; anterior:nil; #hile (actual$%aBorrar) !o begin anterior:actual; if (^actual.raiz$^aBorrar.raiz) then actual:^actual.!ch; el"e actual:^actual.izq; en!; if (^actual.izqnil) then hijo:^actual.!ch; el"e hijo:^actual.izq; if (anteriornil) then T:hijo; el"e if (^anterior.raiz$^actual.raiz) then ^anterior.!ch:hijo; el"e ^anterior.izq:hijo; if (aBorrar$%x) then ^x.raiz:^aBorrar.raiz; free(aBorrar); en!; Biblio,ra"a http(%%es.CiDipedia.org%CiDi%EstructuraEdeEdatos http(%%es.CiDipedia.org%CiDi%F-GFHIrbolEbinario http(%%es.CiDipedia.org%CiDi%F-GFHIrbolEbinarioEdeEbF-GF*)squeda http(%%es.CiDipedia.org%CiDi%F-GFHIrbolEbinarioEdeEb F-GF*)squedaEequilibrado