You are on page 1of 8

INTRODUCCION

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

You might also like