Arboles en Java
Arboles en Java
Arboles en Java
Estructura de Datos:
Método Arboles
Integrantes:
Avila Coaguila, Cristhian Edgar 507870
Díaz Boucher, Carlos 509022
Esparza Agarini, Carlos Israel 509190
Llatas Alvarado, Miguel Angel 508461
Valdivia Barandiarán, José Alberto 509164
Torres Carranza, Juan 507917
Curso:
Estructura de Datos
Profesor:
Gonzales Gálvez, Amadeo
pág. 2
INTRODUCCIÓN
En el siguiente trabajo se hablará acerca de las estructuras de los Árboles, que se diferencia de las estructuras
lineales en la forma de manejo de los datos, las estructuras lineales como su nombre lo indica se lo caracteriza
por la linealidad tal así como los arrays que cada elemento iba ordenado secuencialmente uno tras otra en índices
continuas en la cual a cada elemento correspondía otro
siguiente. En este caso en las estructuras no lineales cada elemento puede tener cualquier siguiente elemento,
estas estructuras también son denominadas multienlazadas.
Estaremos también mencionando los tipos de árboles empleados en la informática y las operaciones que se
pueden realizar sobre las mismas y los recorridos que pueden llegar a tener tal, así como el recorrido en:
PRE Orden
In Orden
Post Orden
Y les estaremos explicando de qué manera hacerlo ya que cada uno de ellos conlleva un orden especifico y una
manera distinta dependiendo del tipo de árbol que se tenga.
ARBOLES
Un árbol consiste en un conjunto de nodos y un conjunto de aristas, de forma que se puede distinguir
un nodo llamado raíz A cada nodo h, excepto la raíz, le llega una arista de otro nodo p (p padre de h, h
uno de los hijos de p). · Para cada nodo hay un camino (secuencia de aristas) único desde la raíz.
pág. 3
NODOS HIJOS Y PADRES
• Todos los nodos conectados a un nodo concreto son hijos o bien el padre de dicho nodo.
• Si el nodo conectado se encuentra en la única ruta a la raíz, dicho nodo recibe el nombre de padre.
• Todos los nodos, salvo la raíz, tienen un único padre.
• El resto de nodos conectados a un nodo concreto son los hijos del nodo.
Los árboles binarios de búsqueda son una estructura de datos fundamental usada para construir más estructuras
de datos abstractas como conjuntos y arrays asociativos.
JUSTIFICACIÓN
En lo particular es necesario comprender el uso, manejo y creación de los diferentes árboles para así poderlos
implementar en el futuro ya que así nos ahorrara trabajo y esfuerzo cuando ya estemos estudiándolos mucho más
afondo y detalladamente ya que este momento este documento solo menciona cosas básicas de árboles solo para
comprensión de ellos ya como se encuentran estructurados.
Al igual que lo anterior mencionado el principal objetivo de esta investigación es el de comprender todas las
funciones de los arboles, así como aprender como implantarlos y desarrollar un pensamiento mucho más rápido
en cuestiones de comprensión.
pág. 4
DEFINICIONES Y TIPOS DE ARBOLES
Camino: secuencia de nudos tales que cada uno es hijo del anterior
• Longitud del camino: nº de nudos que tiene
• Antecesor: un nudo es antecesor de otro si hay un camino del primero al segundo
• Descendiente: un nudo es descendiente de otro si hay un camino del segundo al primero
• Subárbol o Rama: Un nudo y todos sus descendientes
Buscar en la raíz el valor ki más pequeño mayor que la clave x. La búsqueda sigue por el puntero pi
hasta que llegue a un nodo hoja, que será donde esté el puntero al bloque o cubeta (cuando un elemento
se encuentre en una página raíz o interior la búsqueda continuará por la rama derecha de dicha clave,
hasta llegar a una hoja).
Inserción
Se busca el nodo hoja correspondiente y se inserta la clave si no está allí. Si tiene lugar una partición,
se inserta una clave en el nodo padre, que será duplicada si la partición ocurre en una hoja.
Eliminación
Se busca el nodo hoja correspondiente y se elimina la clave. Si al eliminar una clave, n queda menor a
(M/2 -1), entonces debe realizarse una redistribución de claves, tanto en el índice como en las páginas
hojas.
pág. 5
ÁRBOLES BINARIOS DE BÚSQUEDA
Un árbol binario de búsqueda (ABB) es un árbol binario definido de la siguiente forma:
• En caso de tener subárbol izquierdo, la raíz R debe ser mayor que el valor máximo
Almacenado en el subárbol izquierdo, y que el subárbol izquierdo sea un árbol binario de
búsqueda.
• En caso de tener subárbol derecho, la raíz R debe ser menor que el valor mínimo
Almacenado en el subárbol derecho, y que el subárbol derecho sea un árbol binario de
búsqueda.
Para una fácil comprensión queda resumido en que es un árbol binario que cumple que el
subárbol izquierdo de cualquier nodo (si no está vacío) contiene valores menores que el que
contiene dicho nodo, y el subárbol derecho (si no está vacío) contiene valores mayores.
Para estas definiciones se considera que hay una relación de orden establecida entre los
elementos de los nodos. Que cierta relación esté definida, o no, depende de cada lenguaje de
programación. De aquí se deduce que puede haber distintos árboles binarios de búsqueda
para un mismo conjunto de elementos.
La altura h en el peor de los casos siempre el mismo tamaño que el número de elementos
disponibles. Y en el mejor de los casos viene dada por la expresión h = ceil(log2(c + 1)),
donde ceil indica redondeo por exceso.
El interés de los árboles binarios de búsqueda (ABB) 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.
Dependiendo 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 subárboles que penden
de la raíz. Permitir el uso de la igualdad provoca la aparición de valores dobles y hace la
búsqueda más compleja.
pág. 6
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. Cabe destacar que la búsqueda en este tipo de árboles es
muy eficiente, representa una función logarítmica. El máximo número de comparaciones que
necesitaríamos para saber si un elemento se encuentra en un árbol binario de búsqueda estaría
entre [log2(N+1)] y N, siendo N el número de nodos. La búsqueda de un elemento en un ABB
(Árbol Binario de Búsqueda) se puede realizar de dos formas, iterativa o recursiva.
pág. 7
BÚSQUEDA EN PROFUNDIDAD
(en inglés DFS o Depth First Search) es un algoritmo que permite recorrer todos los nodos de un
árbol de manera ordenada, pero no uniforme. Su funcionamiento consiste en ir expandiendo todos y
cada uno de los nodos que va localizando, de forma recurrente, en un camino concreto. Cuando ya no
quedan más nodos que visitar en dicho camino, regresa, de modo que repite el mismo proceso con
cada uno de los hermanos del nodo ya procesado.
En este caso el recorrido se realiza en orden por los distintos niveles del árbol. Así, se comenzaría
tratando el nivel 1, que sólo contiene el nodo raíz, seguidamente el nivel 2, el 3 y así sucesivamente.
En el árbol de la figura el recorrido en amplitud sería: 2, 7, 5, 2, 6, 9, 5, 11 y 4.
El esquema algoritmo para implementar un recorrido por niveles es exactamente el mismo que el
utilizado en la versión iterativa del recorrido en preorden pero cambiando la estructura de datos que
almacena los nodos por una cola.
pág. 8
RECORRIDOS
Si el árbol es vacío, entonces la lista vacía es el listado de los nodos del árbol en Preorden. Si el árbol
no es vacío, el listado en preorden de sus nodos está formado, primero, Por la raíz del árbol, seguido
por los nodos del primer subárbol en preorden, luego Por los nodos del segundo subárbol en preorden,
y así sucesivamente hasta los Nodos del último subárbol en preorden.
Si el árbol es vacío, entonces la lista vacía es el listado de los nodos del árbol en Inorden. Si el árbol
no es vacío, el listado en inorden de sus nodos está formado, primero, por Los nodos del primer
subárbol en inorden, seguido por la raíz del árbol, luego por Los nodos del segundo subárbol en
inorden, y así sucesivamente hasta los nodos del Último subárbol en inorden.
pág. 9
ORDEN POSTERIOR O POSTORDEN
Si el árbol es vacío, entonces la lista vacía es el listado de los nodos del árbol en postorden. Si el árbol
no es vacío, el listado en postorden de sus nodos está formado, primero, por los nodos del primer
subárbol en postorden, luego por los nodos del segundo subárbol en postorden, y así sucesivamente
hasta los nodos del último subárbol en postorden, y finalmente, por la raíz del árbol.
INSERCIÓN
La inserción es similar a la búsqueda y se puede dar una solución tanto iterativa como recursiva. Si
tenemos inicialmente como parámetro un árbol vacío 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 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.
pág. 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.
Nodo a eliminar 74
• 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.
Nodo a eliminar 70
• Borrar un nodo con dos subárboles hijo: la solución 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 más a la derecha de su subárbol izquierdo (mayor nodo
del subárbol 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:
Nodo a eliminar 59
pág. 11
TERMINOLOGÍA Y REPRESENTACIÓN DE UN ÁRBOL GENERAL
La representación y terminología de los árboles se realiza con las típicas notaciones de las relaciones
familiares en los árboles genealógicos: padre, hijo, hermano, ascendente, descendiente, etc.
RAIZ: Todos los árboles que no está vacíos tienen un único nodo raíz. Todos los demás elementos o
nodos derivan o descienden de él. El nodo Raíz no tiene Padre es decir no es hijo de ningún elemento:
pág. 12
ARBOLES GENERALES
Un árbol es un TDA que consta de un conjunto de I nodos y una relación H (paternidad) entre los
nodos tal que:
A los nodos que no son raíces de otros subárboles se les denomina hojas del árbol A, o sea, no tiene
sucesores o hijos.
pág. 13
Árbol Completo de nivel n: es un árbol en el que cada no donde nivel n es una hoja y cada nodo de
nivel menor que n tiene al menos un subárbol no vacío
Recorrido preorden
pág. 14
Recorrido postorden
CONCLUSIONES
De este trabajo se podría decir que los árboles se definen como un conjunto finito de elementos
llamados nodos. En estos casos se puede usar terminología de relaciones familiares para descubrir las
relaciones entre los nodos de un árbol; y que un árbol puede ser implementado fácilmente en una
computadora. Es bueno hacer énfasis en esto ya que se puede saber mucho sobre lo que tiene que ver
con los árboles; entre las cosas que podemos mencionar se encuentra la raíz, los nodos de un árbol y
la diferencia entre nodos sucesores y nodos terminales, como se muestran en el contenido del trabajo.
pág. 15
FOTOS DEL SISTEMA
Nivel 1
pág. 16
pág. 17
Nivel 2
pág. 18
pág. 19
Nivel 3
pág. 20
pág. 21
pág. 22
pág. 23