Vous êtes sur la page 1sur 33

UNIVERSIDAD LAICA ELOY ALFARO DE MANABÍ

EXTENSIÓN EN CHONE

MATERIA:

ESTRUCTURA DE DATOS

CARRERA:

INGENIERÍA EN SISTEMAS

TEMA:

ARBOL BINARIO:
BUSQUEDA Y RECORRIDO
INTEGRANTES:
MENDOZA CHAVEZ GEOMARA KATHERINE
MERA RODRIGUEZ JESSENIA MARICELA
ZAMBRANO CALDERON JAIRO DAMIAN
DOCENTE:

ALBAN GILER ANA CRISTINA

NIVEL:

TERCER SEMESTRE “B”

LUGAR Y FECHA:

CHONE, 26/06/2018
Contenido
INTRODUCCIÓN ............................................................................................................................................. 3
Objetivo .......................................................................................................................................................... 3
Justificación ................................................................................................................................................... 3
ÁRBOLES BINARIO ........................................................................................................................................ 4
Definición de árboles binario ......................................................................................................................... 4
Estructura general de un árbol binario ............................................................................................................ 4
Representación gráfica de un árbol binario .................................................................................................... 5
RECORRIDO DE UN ÁRBOL BINARIO..................................................................................................... 6
Recorrido en Preorden: ............................................................................................................................... 6
Recorrido en Inorden ................................................................................................................................... 7
Recorrido en Postorden: .............................................................................................................................. 8
ARBOLES BINARIOS DE BUSQUEDA (ABB).............................................................................................. 9
Insercion de un arbol binario ........................................................................................................................ 14
ANÁLISIS ....................................................................................................................................................... 15
CONCLUCIÓN ............................................................................................................................................... 16
GOSARIO ........................................................................................................................................................ 17
ANEXOS ......................................................................................................................................................... 18
Ejercicio # 1 ................................................................................................................................................. 18
Ejercicio # 2 .................................................................................................................................................. 21
Diapositivas .................................................................................................................................................. 24
PREGUNTAS .................................................................................................................................................. 29
Bibliografía ....................................................................................................................................................... 33
INTRODUCCIÓN
Los árboles a diferencia de las listas son una estructura de datos de no lineal, atendiendo más a una
estructura de tipo jerárquico. Los árboles son, sin duda, una de las estructuras de datos no lineales,
empleadas en informática, tanto para resolver problemas de hardware como de software. Los árboles
de directorios son organizaciones bastante empleadas por cualquier usuario o programador de una
computadora. De igual manera cumplen un buen papel en la toma de decisiones, valido como árbol
de decisiones.

Los árboles genealógicos y los organigramas son ejemplos comunes. Entre otras aplicaciones, los
árboles se emplean para analizar circuitos eléctricos y para representar la estructura de fórmulas
matemáticas, así como para organizar la información de bases de datos, para representar la estructura
sintáctica de un programa fuente en compiladores y para la toma de decisiones.

Objetivo

Lo substancial de este informe se centra en poder reconocer los árboles binarios, por otra parte
superar el problema generado por la inserción en los árboles de Búsqueda Binaria que podían
degenerar en una lista proporcional a los datos ingresados y por otra reforzar los conceptos
adquiridos en Estructuras de Datos, como al mismo tiempo practicar su implementación con la ayuda
del lenguaje de programación Java.

Justificación
En el ámbito de la informática se utiliza el método de árboles binarios en varios ámbitos ya se para
organizar la información en un disco solido agrupados en directorios y subdirectorios en forma de
árbol como también se hace uso de este en diversos algoritmos de programación entonces es cuando
nos referimos a estructuras de datos en los cuales entran en juego las pilas, colas y listas las cuales
eran estructuras lineales ya que tenían un elemento anterior y un elemento posterior. Con un solo
propósito de ordenar números por medio en una estructura como es el árbol binario.
ÁRBOLES BINARIO
Definición de árboles binario
Los árboles binarios son estructuras de datos muy similares a las listas doblemente enlazadas, en el
sentido que tienen dos punteros que apuntan a otros elementos, pero no tienen una estructura lógica
de tipo lineal o secuencial como aquellas, sino ramificada. Tienen aspecto de árbol, de ahí su
nombre.

Un árbol binario es una estructura de datos no lineal en la que cada nodo puede apuntar a uno o
máximo a dos nodos. También se suele dar una definición recursiva que indica que es una estructura
compuesta por un dato y dos árboles. Esto son definiciones simples. Este tipo de árbol se caracteriza
porque tienen un vértice principal y de él se desprende dos ramas. La rama izquierda y la rama
derecha a las que también se les conoce como subárboles.

Una representación gráfica de la estructura general de un árbol binario se puede visualizar en la


imagen1 que presente a continuación.

Estructura general de un árbol binario

La rama izquierda y la derecha, también son dos árboles binarios. El Vértice principal se denomina
raíz y cada una de las ramas se puede denominar como subárbol izquierdo y subárbol derecho.
Representación gráfica de un árbol binario

Teniendo en cuenta la gráfica del árbol binario de la figura 2 podemos identificar


algunas generalidades y partes del árbol.

Nodo: Un árbol binario es un conjunto de elementos cada uno de los cuales se denomina nodo. Un
árbol Binario puede tener cero nodos y este caso se dice que está vacío. Puede tener un sólo nodo, y
en este caso solamente existe la raíz del árbol o puede tener un número finito de nodos. Cada nodo
puede estar ramificado por la izquierda o por la derecha o puede no tener ninguna ramificación.
Con relación al tipo de nodos que hacen parte de los árboles, se identifican algunos nodos:

Nodo hijo: cualquiera de los nodos apuntados por uno de los nodos del árbol. En la gráfica de la
imagen 2, se tiene, ‘D’ y ‘’ son hijos de ‘A’.
Nodo padre: nodo que contiene un puntero al nodo actual. En el ejemplo, el nodo ‘A’ es padre de ‘D’
y ‘D’.
Los árboles con los que trabajará tienen otra característica importante: cada nodo sólo puede ser
apuntado por otro nodo, es decir, cada nodo sólo tendrá un padre. Esto hace que estos árboles estén
fuertemente jerarquizados, y es lo que en realidad les da la apariencia de árboles.

En cuanto a la posición dentro del árbol se tiene:

Nodo raíz: nodo que no tiene padre. Este es el nodo que usaremos para referirnos al árbol. En el
ejemplo anterior, es el nodo ‘A’.
Nodo hoja: nodo que no tiene hijos. En el ejemplo hay varios: ‘L’, ‘K’, ‘I’, ‘E’.
Existen otros conceptos que definen las características del árbol, en relación a su tamaño:

Orden: es el número potencial de hijos que puede tener cada elemento de árbol. De este modo, se dice
que un árbol en el que cada nodo puede apuntar a otros dos es de orden dos, si puede apuntar a tres
será de orden tres y así sucesivamente.
Grado: el número de hijos que tiene el elemento con más hijos dentro del árbol. En el árbol del ejemplo
en la imagen 2, el grado es dos, ya que tanto ‘A’ como ‘D’ y ‘M’ tienen dos hijos, y no existen
elementos con más de dos hijos.
Nivel: se define para cada elemento del árbol como la distancia a la raíz, medida en nodos. El nivel de
la raíz siempre será cero y el de sus hijos uno. Así sucesivamente. En el ejemplo de la imagen 2, el
nodo ‘D’ tiene nivel 1, el nodo ‘L’ tiene nivel 2.
Altura: la altura de un árbol se define como el nivel del nodo de mayor nivel. Como cada nodo de un
árbol puede considerarse a su vez como la raíz de un árbol, también se puede hablar de altura de ramas.

RECORRIDO DE UN ÁRBOL BINARIO

Los árboles binarios, son estructuras de datos no lineales, son considerados como estructuras
jerárquicas y como tal su forma de recorrerlos difiere sustancialmente en comparación con las listas
enlazadas que son estructuras de datos de tipo lineal. En ese orden de ideas, el recorrido de un árbol
binario se lleva a cabo en tres sentidos: Preorden, Inorden y Postorden. A continuación, se detalla cada
caso.

Recorrido en Preorden:
Recorrer un árbol en preorden consiste en primer lugar, examinar el dato del nodo raíz, posteriormente
se recorrer el subárbol izquierdo en preorden y finalmente se recorre el subárbol derecho en preorden.
Esto significa que para cada subárbol se debe conservar el recorrido en preorden, primero la raíz, luego
la parte izquierda y posteriormente la parte derecha.

Representación gráfica del árbol binario y su recorrido en preorden


Veamos cómo se realiza el recorrido paso a paso según la gráfica del árbol de la imagen 3:

El recorrido inicia con el subárbol izquierdo, el primer nodo a visitar es la raíz que es el nodo 10, luego
se visita el subárbol izquierdo con el nodo 5, posteriormente el 3, luego el nodo 1, sigue con el nodo
4, pasamos al nodo 7 y luego el 9.

Continuamos con el recorrido del subárbol derecho en preorden, con la visita del nodo 15, luego el 14,
se continúa con el 17, se visita el 16 y se finaliza con la visita del nodo 20.

El resultado completo del recorrido en preorden para el árbol de la imagen es: 10 – 5 – 3 – 1 – 4 – 7


– 9 – 15 – 14 – 17 -16 – 20, Tal como se muestra en la imagen 3.

Recorrido en Inorden
Recorrer un árbol en Inorden consiste en primer lugar en recorrer el subárbol izquierdo en Inorden,
luego se examina el dato del nodo raíz, y finalmente se recorre el subárbol derecho en Inorden. Esto
significa que para cada subárbol se debe conservar el recorrido en Inorden, es decir, primero se visita
la parte izquierda, luego la raíz y posteriormente la parte derecha.

Representación gráfica del árbol binario y su recorrido en Inorden


Veamos cómo se realiza el recorrido paso a paso según la gráfica del árbol de la imagen

El recorrido inicia con el subárbol izquierdo, el primer nodo a visitar es el 3 luego se visita el 5 y
posteriormente el 7, con esto se garantiza que el recorrido del subárbol izquierdo se hizo en Inorden.

Finalizado el recorrido del subárbol izquierdo se visita el nodo de la raíz, que para este caso es el
número 10.

Solo queda recorrer el subárbol derecho en Inorden, es decir se visita el 11 luego el 12 y se finaliza
con la visita del nodo 15

El resultado completo del recorrido en Inorden para el árbol de la imagen es:3 – 5 – 7 – 10 – 11


– 12 – 15, Tal como se muestra en la imagen.

Recorrido en Postorden:
Recorrer un árbol en Postorden consiste en primer lugar en recorrer el subárbol izquierdo en Postorden,
luego se recorre el subárbol derecho en Postorden y finalmente se visita el nodo raíz. Esto significa
que para cada subárbol se debe conservar el recorrido en Postorden, es decir, primero se visita la parte
izquierda, luego la parte derecha y por último la raíz.

Representación gráfica del árbol binario y su recorrido en postorden


Veamos cómo se realiza el recorrido paso a paso según la gráfica del árbol de la imagen .

El recorrido inicia con el subárbol izquierdo, el primer nodo a visitar es el 3 luego se visita el 7 y
posteriormente el 5 que es la raíz, con esto se garantiza que el recorrido del subárbol izquierdo se hizo
en Postorden.

Finalizado el recorrido del subárbol izquierdo se inicia la visita al subárbol derecho en Postorden, es
decir, se visita el 11 luego el 15 y se finaliza con la visita del nodo 12 que sería la raíz de este subárbol.

Solo queda recorrer la raíz del árbol que para este caso es el número 10.

El resultado completo del recorrido en Postorden para el árbol de la imagen es:

3 – 7 – 5 – 11 – 15 – 12 – 10 Tal como se muestra en la imagen.

ARBOLES BINARIOS DE BUSQUEDA (ABB)

La búsqueda en árboles binarios es un método de búsqueda simple, dinámico y eficiente considerado


como uno de los fundamentales en Ciencia de la Computación. De toda la terminología sobre árboles,
tan sólo recordar que la propiedad que define un árbol binario es que cada nodo tiene a lo más un hijo
a la izquierda y uno a la derecha. Para construir los algoritmos consideraremos que cada nodo contiene
un registro con un valor clave a través del cual efectuaremos las búsquedas. En las implementaciones
que presentaremos sólo se considerará en cada nodo del árbol un valor del tipo tElemento, aunque en
un caso general ese tipo estará compuesto por dos: una clave indicando el campo por el cual se realiza
la ordenación y una información asociada a dicha clave o visto de otra forma, una información que
puede ser compuesta en la cual existe definido un orden.

Un árbol binario de búsqueda(ABB) es un árbol binario con la propiedad de que todos los elementos
almacenados en el subárbol izquierdo de cualquier nodo x son menores que el elemento almacenado
en x,y todos los elementos almacenados en el subárbol derecho de x son mayores que el elemento
almacenado en x.

Muestra dos ABB construidos en base al mismo conjunto de enteros:

ABB con los mismos elementos.

Obsérvese la interesante propiedad de que si se listan los nodos del ABB en inorden nos da la lista de
nodos ordenada. Esta propiedad define un método de ordenación similar al Quicksort, con el nodo raíz
jugando un papel similar al del elemento de partición del Quicksort, aunque con los ABB hay un gasto
extra de memoria mayor debido a los punteros. La propiedad de ABB hace que sea muy simple diseñar
un procedimiento para realizar la búsqueda. Para determinar si k está presente en el árbol la
comparamos con la clave situada en la raíz, r. Si coinciden la búsqueda finaliza con éxito, si k<r es
evidente que k, de estar presente, ha de ser un descendiente del hijo izquierdo de la raíz, y si es mayor
será un descendiente del hijo derecho. La función puede ser codificada fácilmente de la siguiente
forma:

#define ABB_VACIO NULL


#define TRUE 1
#define FALSE 0

typedef int tEtiqueta /*Algun tipo adecuado*/


typedef struct tipoceldaABB{
struct tipoceldaABB *hizqda,*hdrcha;
tEtiqueta etiqueta;
}*nodoABB;
typedef nodoABB ABB;

ABB Crear(tEtiqueta et)

{
ABB raiz;

raiz = (ABB)malloc(sizeof(struct tceldaABB));


if (raiz == NULL)
error("Memoria Insuficiente.");
raiz->hizda = NODO_NULO;
raiz->hdcha = NODO_NULO;
raiz->etiqueta = et;
return(raiz);
}

int Pertenece(tElemento x,ABB t)

if(!t)
return FALSE
else if(t->etiqueta==x)
return TRUE;
else if(t->etiqueta>x)
return pertenece(x,t->hizqda);
else return pertenece(x,t->hdrcha);

Es conveniente hacer notar la diferencia entre este procedimiento y el de búsqueda binaria. En éste
podría pensarse en que se usa un árbol binario para describir la secuencia de comparaciones hecha por
una función de búsqueda sobre el vector. En cambio, en los ABB se construye una estructura de datos
con registros conectados por punteros y se usa esta estructura para la búsqueda. El procedimiento de
construcción de un ABB puede basarse en un procedimiento de inserción que vaya añadiendo
elementos al árbol. Tal procedimiento comenzaría mirando si el árbol es vacío y de ser así se crearía
un nuevo nodo para el elemento insertado devolviendo como árbol resultado un puntero a ese nodo. Si
el árbol no está vacío se busca el elemento a insertar como lo hace el procedimiento pertenece sólo
que al encontrar un puntero NULL durante la búsqueda, se reemplaza por un puntero a un nodo nuevo
que contenga el elemento a insertar. El código podría ser el siguiente:

void Inserta(tElemento x,ABB *t)

if(!(*t)){
*t=(nodoABB)malloc(sizeof(struct tipoceldaABB));
if(!(*t)){
error("Memoria Insuficiente.");
}
(*t)->etiqueta=x;
(*t)->hizqda=NULL;
(*t)->hdrcha=NULL;
} else if(x<(*t)->etiqueta)
inserta(x,&((*t)->hizqda));
else
inserta(x,&((*t)->hdrcha));
}

Por ejemplo, supongamos que queremos construir un ABB a partir del conjunto de
enteros {10,5,14,7,12} aplicando reiteradamente el proceso de inserción. El resultado es el que muestra
la figura
Insercion de un arbol binario
ANÁLISIS
Con la implementación de un árbol binario de búsqueda ahora completo, haremos un análisis rápido
de los métodos que hemos implementado. Veamos primero el método agregar. El factor limitante en
su rendimiento es la altura del árbol binario. Recuerde de la sección de vocabulario que la altura de
un árbol es el número de aristas entre la raíz y el nodo hoja más profundo. La altura es el factor
limitante porque cuando estamos buscando el lugar apropiado para insertar un nodo en el árbol,
tendremos que hacer como máximo una comparación en cada nivel del árbol.
CONCLUCIÓN
Luego de concluir el siguiente tema, debemos tener en cuenta que un árbol como estructura de datos
nos permite almacenar una cantidad significativa de datos de forma ordenada. Un árbol se representa
con un conjunto de nodos entrelazados entre sí por medio de ramas, debemos tener en cuenta que el
nodo base es único, y se le denomina raíz. En un árbol un padre puede tener varios hijos, pero un hijo
solo puede tener un padre. Desde la raíz se puede llegar a cualquier nodo progresando por las ramas y
atravesando los sucesivos niveles estableciendo así un camino.

Los recorridos de un árbol se entienden por el tratamiento realizado para acceder a los diferentes nodos
de un árbol. El recorrido puede afectar a la totalidad de los nodos del árbol, por eso debemos tener
muy claro que al realizar un árbol debemos colocar nombres complejos que trate del algoritmo que
estamos realizando, ya que al realizar los recorridos debemos saber dónde estamos ubicados en dicho
árbol, y cuando se vaya haciendo más extenso dicho algoritmo que hemos creado sea más fácil de
ubicarnos. Ya que si nos ubicamos mal en un nodo podemos crear un mal funcionamiento del
algoritmo, borrar información equivocada o que ocurra un desbordamiento de datos.
GOSARIO

VÉRTICE

(geometría): Son las líneas o segmentos que unen las aristas consecutivos de los
polígonos. Vértice (teoría de grafos): uno de los elementos de un grafo. Vértice o cima (topografía):
la parte culminante de una montaña.

RAMIFICADA

Los árboles de decisión, a diferencia de los diagramas de influencia, muestran todas las opciones y
sucesos de azar posibles con una estructura de ramas.

QUICKSORT

(en inglés, ordenamiento rápido). Es un algoritmo basado en la técnica de divide y vencerás, que
permite, en promedio, ordenar n elementos en un tiempo proporcional a n log n.

BINARIO

Que está compuesto de dos elementos.

Que está en un sistema de numeración de base dos.

SUBÁRBOL

La estructura árbol se representa por lo general en una clase árbol de lista ligada. Un subárbol es un
conjunto de nodos tal que contienen un nodo padre y nodos hijos que a su vez tienen nodos hijos.
ANEXOS
Ejercicio # 1
Ejercicio # 2
Diapositivas
PREGUNTAS

Preguntas

1. Complete
Las listas doblemente enlazadas, en el sentido que tienen dos punteros que apuntan a otros
____________, pero no tienen una estructura lógica de tipo __________o__________.

a) Elementos, lineal o secuencial


b) Segmentos ,analógico o lineal
c) Elementos , gráficos o secuencial

2. Escoja el literal correcto.


El árbol binario se caracteriza porque tienen un vértice y se desprenden de la siguiente
manera.

a) Raíz, sub árbol izquierdo y sub árbol derecho.


b) Cuerpo , sub árbol izquierdo, sub árbol derecho
c) Raíz ,sub árbol derecho
d) Ninguno de los anteriores
3. Verdadero o falso
El recorrido de un árbol binario son considerados como estructuras jerárquicas y como tal su
forma de recorrerlos difiere sustancialmente en comparación con las listas enlazadas que son
estructuras de datos de tipo lineal.

(VERDADERO)

4. ¿Cuáles son los sentidos de un árbol binario?


Preorden, Inorden y Postorden.

5. Complete
Recorrer un árbol en __________ consiste en primer lugar, examinar el dato del _____
_____ , posteriormente se recorrer el subárbol izquierdo en preorden y finalmente se recorre
el subárbol derecho en preorden.

a) Preorden, nodo raíz


b) Inorden ,nodo sub árbol derecho
c) Portorden,sub árbol nodo izquierdo

6. Verdadero o falso
Recorrer un árbol en Postorden consiste en segundo lugar en recorrer el subárbol izquierdo en
Postorden, luego no se recorre el subárbol derecho en Postorden y finalmente se visita el
nodo raíz.
(FALSO)

7. ¿Qué es un árbol binario de búsqueda?


Es un árbol binario con la propiedad de que todos los elementos almacenados en el subárbol
izquierdo de cualquier nodo x son menores que el elemento almacenado en x,y todos los
elementos almacenados en el subárbol derecho de x son mayores que el elemento almacenado
en x.

8. Escoja el literal correcto.

El recorrer un árbol consiste en primer lugar en recorrer el subárbol izquierdo en Postorden,


luego se recorre el subárbol derecho en Postorden y finalmente se visita el nodo raíz.

a) Postoden
b) Inorden
c) Preorden

9. Subraye el literal correcto.

ÁRBOL BINARIO
a) Los árboles de gestión son organizaciones bastante empleadas por cualquier animador
de una computadora.
b) Los árboles de directorios son organizaciones bastante empleadas por cualquier
usuario o programador de una computadora.
c) Los códigos de directorios son organizaciones por cualquier usuario o programador
de una computadora.
d) son organizaciones bastante empleadas por cualquier usuario o programador de una
empresa.

10. Verdadero o falso


Un árbol binario es una estructura de datos no lineal en la que cada nodo puede apuntar a uno
o máximo a dos nodos.
(VERDADERO)

11. Subraye el literal correcto.

DIFERENCIAS ENTRE ÁRBOL Y LISTAS


a) Los árboles a diferencia de las listas son una estructura de datos lineal, atendiendo
más a una estructura de tipo jerárquico.
b) Los árboles a diferencia de las listas son una estructura de datos no lineal,
atendiendo más a una estructura de tipo jerárquico.
c) Los árboles a diferencia de las listas son una estructura de datos no lineal, atendiendo
más a una estructura de tipo no jerárquico.
12. Verdadero o falso
Los árboles son, sin duda, una de las estructuras de datos lineales, empleadas en informática,
tanto para resolver problemas de hardware como de software.

(FALSO)
13. Complete
Este tipo de ___________ se caracteriza porque tienen un __________ principal y de él se
__________ dos ramas. La rama izquierda y la rama derecha a las que también se les conoce
como __________.
a) Subárboles
b) Vértice
c) Árbol
d) Desprende

14. Subraye el literal correcto.

UN ÁRBOL BINARIO ES UN CONJUNTO DE ELEMENTOS CADA UNO DE LOS


CUALES SE DENOMINA:

a) Hoja
b) Nodo
c) Nodo hijo o Nodo padre
d) Raíz

15. Subraye el literal correcto.

CUÁL ES LA UTILIZACIÓN DE LOS ARBOLES DENTRO DE OTRAS


APLICACIONES.

a) Los árboles de directorios son organizaciones bastante empleadas por cualquier


usuario o programador de una computadora.

b) Los árboles se emplean para analizar circuitos eléctricos y para representar la


estructura de fórmulas matemáticas, bases de datos, compiladores y para la
toma decisiones.

c) Los árboles de directorios son organizaciones bastante empleadas por cualquier


usuario valido como árbol de decisiones.

d) los árboles se emplean para analizar circuitos eléctricos


Bibliografía
Agilar, L. L. (2017). fundamento de programacion . Madrid: Mc graw hill.

Camacho, J. (30 de 7 de 2016). Estructuras de Datos en Java. Obtenido de Estructuras de Datos en Java:
http://www.utim.edu.mx/~svalero/docs/ED_Java

Lopez, C. A. (2012). Estructura de datos. Estado de México.: RED TERCER MILENIO S.C.

Martinez, I. Z. (6 de 12 de 2017). Programacion en java . Obtenido de Programacion en java :


https://intprog.files.wordpress.com/2015/08/programacion-en-c-metodologia-algoritmos-y-
estructura-de-datos-editorial-mcgraw-hill.pdf

Silva, L. F. (15 de 05 de 2017). Estructuras de datos en Java pdf. Obtenido de Estructuras de datos en Java
pdf: http://editorial.udistrital.edu.co/contenido/c-989.pdf

Vous aimerez peut-être aussi