06020086 5.1.- Concepto de Arbol Binario 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 arboles binarios de busqueda, los monticulos binarios y Codificacion de Hoffman. 5.1.1.- Clasificacion de los Arboles Binarios arbol binario distinto: Se dice que un arbol es distinto cuando su estructura grafica es diferente. arbol binario similiar: Se dice que un arbol es similar cuando su estructura grafica es identica pero la informacion que contiene entre sus nodos es diferente. arbol binario equivalente: Son aquellos que su estructura grafica es identica pero ademas la informacion entre sus nodos. arbol binario completo: son aquellos que todos nus nodos exepto el ultimo nivel tienen sus dos hijos. arbol binario lleno: es aquel que tiene su numero maximo de posibles nodos. 5.2.- Operaciones basicas sobre arboles binarios Creacion de un arbol binario
Insercion de un arbol binario
Eliminacion de un arbol binario
5.2.1.- Creacion de un arbol binario Se definir el rbol con una clave de tipo entero (puede ser cualquier otra tipo de datos) y dos hijos: izquierdo (izq) y derecho (der). Para representar los enlaces con los hijos se utilizan punteros. El rbol vaco se representar con un puntero nulo. 5.2.2.- Insercion de un arbol binario Si tenemos inicialmente como parmetro un rbol vaco se crea un nuevo nodo como nico contenido el elemento a insertar. Si no lo est, se comprueba si el elemento dado es menor que la raz del rbol inicial con lo que se inserta en el subrbol izquierdo y si es mayor se inserta en el subrbol derecho. De esta forma las inserciones se hacen en las hojas. 5.2.3.- Eliminacion de un arbol binario La operacin de borrado no es tan sencilla como las de bsqueda e insercin. Existen varios casos a tener en consideracin:
Borrar un nodo sin hijos nodo hoja
Borrar un nodo con un subrbol hijo Borrar un nodo con dos subrboles hijo 5.2.2.1.- Borra run nodo sin hijos o nodo hoja simplemente se borra y se establece a nulo el apuntador de su padre. 5.2.2.2.- Borrar un nodo con un subarbol hijo se borra el nodo y se asigna su subrbol hijo como subrbol de su padre. 5.2.2.3.- Borrar un nodo con dos subarboles hijo la solucin est en reemplazar el valor del nodo por el de su predecesor o por el de su sucesor en inorden y posteriormente borrar este nodo. Su predecesor en inorden ser el nodo ms a la derecha de su subrbol izquierdo (mayor nodo del subarbol izquierdo), y su sucesor el nodo ms a la izquierda de su subrbol derecho (menor nodo del subarbol derecho). 5.3.- Arboles balanceados Un rbol binario de bsqueda auto-balanceable o equilibrado es un arbol binario de busqueda que intenta mantener su altura, o el nmero de niveles de nodos bajo la raz, tan pequeos como sea posible en todo momento, automticamente. Esto es importante, ya que muchas operaciones en un rbol de bsqueda binaria tardan un tiempo proporcional a la altura del rbol, y los rboles binarios de bsqueda ordinarios pueden tomar alturas muy grandes en situaciones normales, como cuando las claves son insertadas en orden. Mantener baja la altura se consigue habitualmente realizando transformaciones en el rbol, como la rotacion de arboles, en momentos clave. GRACIAS