2. INTRODUCCIÓN
Es un conjunto finito de elementos, de
nombres nodos, que bien están vacios o esta
formado por una raíz o con dos subárbol
izquierdo y derecho.
Las aplicaciones de los arboles binarios se
les puede utilizar para representar una
estructura en la cual es posible tomar
decisiones con dos opciones en distintos
puntos.
3. OPERACIONES BÁSICAS
Esta operación es un parámetro que es la visita
de todos los nodos o, como se denomina
usualmente, del recorrido del árbol. Recorrido
en amplitud
Es aquel que recorre
el
árbol por niveles, en
el último ejemplo
sería:
12 - 8,17 - 5,9,15
4. RECORRIDOS EN ÁRBOLES BINARIOS
Hay tres tipos de recorridos Pre-orden,
Entre-orden y Post-orden.
1. Pre-orden
Recorre Raíz, Izquierda, Derecha. (RID)
2. Entre-orden
Recorrer Izquierdo, Raíz, Derecho. (IRD)
3. Post-orden
Izquierda, Derecha, Raíz. (IDR)
5. EJEMPLO DE RECORRIDO EN
ÁRBOLES BINARIOS
Árbol Binario
Pre-orden (A,B,C,D,E,F,G,H,I,J)
Entre-orden(C,B,D,E,A,F,I,H.J,G)
Post-orden (C,E,D,B,I,J,H,G,F,A)
6. ÁRBOLES BINARIOS DE BÚSQUEDA
Un árbol vacío es un árbol binario de búsqueda. Un
árbol binario no vacío, de raíz, es un árbol binario de
búsqueda si:
• En caso de tener subárbol izquierdo, la raíz debe ser
mayor que el valor máximo almacenado en el
subárbol izquierdo.
• En caso de tener subárbol derecho, la raíz debe ser
menor que el valor mínimo almacenado en el subárbol
derecho.
7. El interés de los árboles binarios de búsqueda
(abb) radica en que su recorrido en in orden
proporciona los elementos ordenados de forma
ascendente y en que la búsqueda de algún elemento
suele ser muy eficiente.
8. BÚSQUEDA
La búsqueda consiste acceder a la raíz del árbol, si
el elemento a localizar coincide con éste la búsqueda
ha concluido con éxito, si el elemento es menor se
busca en el subárbol izquierdo y si es mayor en el
derecho. Si se alcanza un nodo hoja y el elemento no
ha sido encontrado se supone que no existe en el
árbol
9. INSERCIÓN
Es similar a la búsqueda y se puede dar una solución iterativa
como recursiva. Si tenemos inicialmente como parámetro un
árbol vacío se crea un nuevo nodo. Si no lo está, se comprueba
si el elemento dado es menor que la raíz del árbol inicial con lo
que se inserta en el subárbol izquierdo y si es mayor se
inserta en el subárbol derecho. De esta forma las inserciones
se hacen en las hojas
10. BORRADO
La operación de borrado no es tan sencilla como las de
búsqueda e inserción. Existen varios casos a tener
en consideración:
Borrar un nodo sin hijos ó nodo hoja: simplemente
se borra y se establece a nulo el apuntador de su
padre.
11. Borrar un nodo con un subárbol
hijo: se borra el nodo y se asigna su
subárbol hijo como subárbol de su
padre.
12. Borrar un nodo con dos sub árboles hijo: la solución
está en reemplazar el valor del nodo por el por el de su
sucesor en in orden y posteriormente borrar este nodo.
Su predecesor en in orden será el nodo más a la derecha
de su subárbol izquierdo (mayor nodo del sub arbol
izquierdo), y su sucesor el nodo más a la izquierda de su
subárbol derecho (menor nodo del sub árbol derecho). En
la siguiente figura se muestra cómo existe la posibilidad
de realizar cualquiera de ambos reemplazos:
13. RECURSIVIDAD
Definición.
Hablamos de recursividad, tanto en el ámbito
informático como en el ámbito matemático,
cuando definimos algo (un tipo de objetos, una
propiedad o una operación) en función de sí
mismo. La recursividad en programación es una
herramienta sencilla, muy útil y potente.
Tipos.
Podemos distinguir dos tipos de recursividad:
Directa: Cuando un subprograma se llama a si
mismo una o mas veces directamente.
Indirecta: Cuando se definen una serie de
subprogramas usándose unos a otros.
14. CARACTERISTICAS
Ventajas e inconvenientes.
La principal ventaja es la simplicidad de
comprensión y su gran potencia, favoreciendo la
resolución de problemas de manera natural,
sencilla y elegante; y facilidad para comprobar y
convencerse de que la solución del problema es
correcta.
El principal inconveniente es la ineficiencia tanto
en tiempo como en memoria, dado que para
permitir su uso es necesario transformar el
programa recursivo en otro iterativo, que utiliza
bucles y pilas para almacenar las variables.
15. ARBOLES BINARIOS
La búsqueda de un elemento en un ABB (Árbol
Binario de Búsqueda) se puede realizar de dos
formas, iterativa o recursiva.
Ejemplo de versión iterativa en el lenguaje de
programación C, suponiendo que estamos
buscando una clave alojada en un nodo donde está
el correspondiente "dato" que precisamos
encontrar: