You are on page 1of 23

FACULTAD DE INGENIERÍA

CARRERA DE INGENIERÍA DE SISTEMAS


COMPUTACIONAL

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

LIMA 2016 PERÚ


Contenido
INTRODUCCIÓN ...............................................................................................................................3
NODOS HIJOS Y PADRES ................................................................................................................4
Uso de los arboles ................................................................................................................................4
JUSTIFICACION ................................................................................................................................4
DEFINICIONES Y TIPOS DE ARBOLES........................................................................................5
Búsqueda por clave ..............................................................................................................................5
Inserción...............................................................................................................................................5
Eliminación ..........................................................................................................................................6
ÁRBOLES BINARIOS DE BÚSQUEDA ..........................................................................................6
BÚSQUEDA ........................................................................................................................................7
BÚSQUEDA EN PROFUNDIDAD ....................................................................................................8
BÚSQUEDA POR AMPLITUD (O POR NIVELES) ......................................................................8
RECORRIDOS ....................................................................................................................................9
ORDEN PREVIO O PREORDEN ......................................................................................................9
ORDEN SIMÉTRICO O INORDEN ................................................................................................10
ORDEN POSTERIOR O POSTORDEN ...........................................................................................10
INSERCIÓN ......................................................................................................................................10
BORRADO ........................................................................................................................................11
TERMINOLOGÍA Y REPRESENTACIÓN DE UN ÁRBOL GENERAL ......................................12
ARBOLES GENERALES .................................................................................................................13
Recorrido preorden ............................................................................................................................14
Recorrido postorden ...........................................................................................................................15
CONCLUSIONES .............................................................................................................................15
FOTOS DEL SISTEMAS……………………………………………………………………………………………………………………16

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.

Uso de los arboles


Árbol es el nombre que se le da a un grupo versátil de estructuras de datos. Se pueden utilizar para implementar
un número de interfaces abstractas, incluida la interfaz List, pero las aplicaciones en las que resultan más útiles
emplean estructuras de ramas de árboles para representar alguna propiedad de los elementos de los datos o para
optimizar ciertos métodos.

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

Búsqueda por clave

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:

Todo árbol vacío es un árbol binario de búsqueda.

Un árbol binario no vacío, de raíz R, es un árbol binario de búsqueda si:

• 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.

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:

data Buscar_ABB(abb t,clave k)


{ abb
p; dato
e;
e=NULL;
p=t;
if (!estaVacio(p))
{
while (!estaVacio(p) && (p->k!=k) )
{
if (k < p->k)
{
p=p->l;
}
if (p->k < k)
{
p=p->r;
}
}
if (!estaVacio(p) &&(p->d!=NULL) )
{
e=copiaDato(p->d);
}
}
return e; }

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.

BÚSQUEDA POR AMPLITUD (O POR NIVELES)

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.

Al contrario que en los métodos de recorrido en profundidad, el recorrido por niveles no es de


naturaleza recursiva. Por ello, se debe utilizar una cola para recordar los subárboles izquierdos y
derecho de cada nodo.

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

ORDEN PREVIO O PREORDEN

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.

ORDEN SIMÉTRICO O INORDEN

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:

PADRE: X es padre de Y sí y solo sí el nodo X apunta a Y. También se dice que X es antecesor de


Y.
HIJO: X es hijo de Y, sí y solo sí el nodo X es apuntado por Y. También se dice que X es descendiente
directo de Y.
HERMANO: Dos nodos serán hermanos si son descendientes directos de un mismo nodo.
HOJA. Se le llama hoja o Terminal a aquellos nodos que no tienen ramificaciones (hijos).
NODO. Son los Vértices o elementos del Árbol.
NODO INTERIOR. Es un nodo que no es raíz ni Terminal.
GRADO. Es el número de descendientes directos de un determinado nodo.
GRADO DEL ARBOL Es el máximo grado de todos los nodos del árbol.
NIVEL. Es el número de arcos que deben ser recorridos para llegar a un determinado nodo. Por
definición la raíz tiene nivel 1.
ALTURA. Es el máximo número de niveles de todos los nodos del árbol. Equivale al nivel más alto
de los nodos más 1.
PESO. Es el número de nodos terminales del árbol
LONGITUD DE CAMINO. Es el número de arcos que deben ser recorridos para llegar desde la raíz
al nodo X. Por definición la raíz tiene longitud de camino 1, y sus descendientes directos longitud de
camino 2 y así sucesivamente.

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:

Hay un nodo especialmente designado, llamado la raíz del árbol A.

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.

Grado de un nodo: cantidad de hijos de un nodo

Grado de un árbol: el mayor de los grados de todos sus nodos

Nodo Hoja: a un nodo sin hijos o con grado = 0

Nodo Rama: a un nodo que tiene hijos, ósea a la raíz de un subárbol

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

Recorridos Preorden: Se recorrido es Raíz - Izquierda - Derecha [*, + , A , B , - , C , D]


Recorridos Inorden: Se recorrido es Izquierda - Raíz - Derecha [A , + , B, * , C , - , D ]
Recorridos Postorden: Su recorrido es Izquierda - Derecha - Raíz [A , B , + , C , D , - , * , ]

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

You might also like