SlideShare una empresa de Scribd logo
1 de 73
Descargar para leer sin conexión
Árboles
Unidad	3
Árboles
•Definición
•Conceptos Generales
Árboles
• Si bien una estructura dinámica lineal brinda varias
ventajas sobre las estructuras estáticas contiguas,
todavía tiene una gran limitante, el acceso a los
elementos se debe realizar de forma secuencial.
• Para los casos donde esto es un problema
aparecen las estructuras de datos no lineales
(estructuras multienlazadas), en especial los
árboles.
Árboles
• El árbol es una estructura de datos fundamental en
informática, muy utilizada en todos sus campos.
• Algorítmica: métodos de clasificación y
búsqueda
• Compiladores: árboles sintácticos de una
gramática
• Inteligencia artificial: árboles de juegos, árboles
de decisión, etc.
• Se utilizan principalmente para representar datos
con relación jerárquica.
Árboles
• Un árbol es una estructura de datos homogénea,
dinámica y no lineal, en la que cada nodo
(elemento) puede tener varios nodos posteriores,
pero sólo puede tener un nodo anterior.
• Un árbol es:
• Dinámico: Su estructura puede cambiar durante
la ejecución de un programa.
• No lineal: Cada elemento del árbol puede
contener varios elementos que dependen de él.
Árboles
• Las definiciones importantes a tener en cuenta
son:
• Nodo: Son todos los vértices o elementos del
árbol.
• Raíz: Es el nodo del cual se derivan todos los
demás nodos. Solamente se puede tener una
en cada árbol.
• Nodo terminal (hoja, leaf node): Es aquel nodo
que no contiene ningún subárbol
• Camino (arco): Enlace entre dos nodos
consecutivos.
Árboles
• Las definiciones importantes a tener en cuenta
son:
• Nodo Padre: Nodo antecesor o ascendiente del
actual. La raíz no tiene un nodo padre.
• Nodos Hermanos: Nodos de un mismo padre.
• Nodos Interiores: Nodos que no son hojas ni
raíces.
• Bosque: Colección de dos o más árboles.
Árboles
• Las definiciones importantes a tener en cuenta
son:
• Rama: Camino que termina en una hoja.
• Nivel de un nodo: Longitud del camino desde la
raíz al nodo específico. Se dice que la raiz tiene
un nivel 0.
• Altura del árbol (profundidad): Número máximo
de nodos de una rama. Equivale al nivel más
alto de los nodos más uno.
• Peso del árbol: Número de nodos hoja.
Árboles
Árboles
• La definición de un árbol implica una estructura
recursiva.
• De la raíz se desprenden otros árboles
denominados “subárboles del raíz” u offspring, los
cuales a su vez tienen su propia raíz.
Árboles	Binarios
•Árboles Binarios
•Recorridos
Árboles	Binarios	
● Es un árbol en el que cada nodo puede tener
únicamente 0, 1 o 2 subárboles.
● Los subárboles reciben el nombre de “Subárbol
izquierdo” y “Subárbol derecho”.
● Puede ser implementado fácilmente en una
computadora.
Árboles	Binarios
Árboles	Binarios	
● Los árboles binarios tienen cierta terminología
propia de su estructura.
● Árboles Similares: Son aquellos que
tienen la misma estructura
● Árboles Equivalentes: Son aquellos que
además de ser similares contienen la
misma información.
● Árbol Equilibrado: Es aquel en que la
altura de los dos subárboles de la raíz se
diferencian en como máximo una unidad.
Árboles	Binarios	
● Los árboles binarios tienen cierta terminología
propia de su estructura.
● Árbol Completo: Es aquel en que todos
los nodos tienen exactamente 0 o dos
subárboles.
● Árbol Lleno: Es aquel árbol completo en
el que todos los niveles están llenos.
● Árbol Degenerado: Es aquel árbol en
que todos sus nodos tienen solamente
un subárbol.
Similares	(Ejemplo)
Equivalentes	(Ejemplo)
Equilibrados	(Ejemplo)
a. Equilibrado
b. No Equilibrado
Equilibrados	(Ejemplo)
a. Equilibrado
b. No Equilibrado
Completo	(Ejemplo)
Lleno	(Ejemplo)
Árboles	Binarios	
● Para los árboles binarios, especialmente para
los árboles llenos se cumple lo siguiente:
● Para una altura H
○ La cantidad máxima de nodos N está
dada por ((2^H) - 1)
○ La cantidad máxima de nodos n en el
último nivel está dada por 2^(H-1)
● Para una cantidad de nodos N
○ La altura del árbol debe ser como
mínimo log(n+1)
Conversión	a	Binarios	
● Existe un algoritmo sencillo para convertir
cualquier árbol a Binario.
● Se copia la raíz.
● Se coloca el primer hijo del árbol
tradicional como hijo izquierdo.
● Todos los hermanos de éste se colocan
sucesivamente como hijos derechos.
● Se repite recursivamente en todas las
ramas.
Ejemplo	de	conversión
● Dado el siguiente árbol no binario.
Ejemplo	de	conversión
● Se obtiene el siguiente árbol binario.
Ejercicio
● Convierta el siguiente árbol en un árbol binario.
Solución
● El árbol binario equivalente es:
Representaciones
● Los árboles binarios pueden ser representados
por medio de punteros.
Representaciones
● Los árboles binarios pueden ser representados
por medio de punteros.
Representaciones
● Los árboles binarios pueden ser representados
por medio de arrays.
Recorridos
● El recorrido es el proceso que permite acceder
una única vez a cada uno de los nodos del
árbol.
● Al recorrer el árbol se debe examinar el
contenido completo del mismo.
● Existen varios métodos de recorrer un árbol
binario.
● Las tareas asociadas son:
○ Visitar la raíz
○ Recorrer el subárbol izquierdo
○ Recorrer el subárbol derecho
Recorrido	Pre-Orden
● Las tareas asociadas se realizan
recursivamente en el siguiente orden:
○ Visitar la raíz
○ Recorrer el subárbol izquierdo
○ Recorrer el subárbol derecho
Recorrido	In-Orden
● Las tareas asociadas se realizan
recursivamente en el siguiente orden:
○ Recorrer el subárbol izquierdo
○ Visitar la raíz
○ Recorrer el subárbol derecho
Recorrido	Post-Orden
● Las tareas asociadas se realizan
recursivamente en el siguiente orden:
○ Recorrer el subárbol izquierdo
○ Recorrer el subárbol derecho
○ Visitar la raíz
Ejercicio
● Recorra el siguiente árbol según los tres
métodos descritos.
Solución
● La solución al ejercicio anterior es:
Ejercicio
● Recorra el siguiente árbol según los tres
métodos descritos.
Solución
● La solución al ejercicio anterior es:
Árboles	Binarios	de	Búsqueda
•Árboles de búsqueda
•Árboles AVL
El	problema	de	las	búsquedas
● Cuando analizamos los métodos de búsqueda
secuencial y binario determinamos que el
segundo es mucho más eficiente.
● El problema del método binario es que necesita
que el listado se encuentre ordenado
previamente.
● Los procesos para mantener un arreglo o lista
ordenados luego de las inserciones y
eliminaciones son muy complejos.
Árboles	binarios	de	búsqueda
● Es una estructura donde los elementos pueden
ser eficazmente localizados, insertados o
borrados.
● Es ideal para los casos donde se tienen que
manejar gran número de operaciones.
● Esta estructura también es llamada “Árbol
binario clasificado”, “Binary search tree” o
“ABB”.
Árboles	binarios	de	búsqueda
● El dato que contendrá el árbol debe permitir
clasificación, es decir, debe poder compararse
con otro para determinar si es mayor, menor o
igual.
● El primer valor recibido siempre será la raiz.
● En cualquier nodo, todos los valores del
subárbol izquierdo son menores o iguales al
valor del nodo.
● Igualmente, todos los valores del subárbol
derecho son mayores al valor del nodo.
Árboles	binarios	de	búsqueda
Árboles	binarios	de	búsqueda
● En este tipo de árboles el recorrido in-orden
siempre recorrerá los valores de forma
ordenada.
Búsqueda
● La búsqueda en un árbol binario no es más que
una búsqueda binaria.
● En lugar de calcular un nuevo centro utilizamos
al padre como centro.
● Si no se encuentra el elemento, nos movemos
hacia el subárbol izquierdo o derecho según
corresponda.
● La condición de terminación es llegar a un nodo
hoja o encontrar el elemento buscado.
Inserción
● Se debe recorrer el árbol buscando la posición
ideal para insertarlo.
● Se evalúa el padre, si es nulo se inserta en esta
posición.
● Si no es nulo se evalúa si corresponde
insertarlo a la izquierda o a la derecha
● Se realiza una llamada recursiva al método de
inserción para el subárbol correspondiente.
Inserción
● Construya el árbol binario de búsqueda para la
siguiente secuencia de entradas.
Inserción
● El árbol resultante es el siguiente.
Inserción
● Construya el árbol binario de búsqueda para la
siguiente secuencia de entradas.
Inserción
● El árbol resultante es el siguiente.
Eliminación
● Es la operación más complicada.
● Se debe conservar el orden de los elementos
del árbol.
● Se consideran diferentes casos según la
posición del nodo en el árbol:
○ Si es una hoja
○ Si solo tiene un descendiente
○ Si tiene los dos descendientes
Eliminación
● Cuando es una hoja, simplemente se suprime.
● Ejemplo: Eliminar C
Eliminación
● Cuando tiene solamente un hijo, se borra el
padre y se sustituye por el hijo.
● Ejemplo: Eliminar F
Eliminación
● Cuando tiene los dos hijos, se sustituye por el
elemento situado lo más a la derecha del
subárbol izquierdo o más a la izquierda del
subárbol derecho.
● Ejemplo: Eliminar B o D
Árbol	AVL
● Es un árbol binario de búsquedas auto
balanceable.
● Es decir que la rama izquierda y la derecha no
difieren en altura por más de uno.
● Fue ideado en 1962 por los matemáticos
Georgii Adelson-Velskii y Yevgeniy Landis.
● La razón de mantener este balance es que el
crecimiento de una operación de búsqueda se
mantenga lo más cercano a O(logn).
Árbol	AVL
● Es un árbol binario de búsquedas auto
balanceable.
● Es decir que la rama izquierda y la derecha no
difieren en altura por más de uno.
● Fue ideado en 1962 por los matemáticos
Georgii Adelson-Velskii y Yevgeniy Landis.
● La razón de mantener este balance es que el
crecimiento de una operación de búsqueda se
mantenga lo más cercano a O(logn).
Factor	de	Equilibrio
● La principal diferencia entre los ABB y los AVL
es la existencia del “Factor de Equilibrio”.
● Es un número que se calcula como “altura del
subárbol izquierdo” - “altura del subárbol
derecho”.
● Este se recalcula al realizar una inserción o
borrado.
● Si el valor absoluto del factor de equilibrio es
mayor a 1 se debe hacer el proceso de
Rotación.
Factor	de	Equilibrio
● La propiedad de mantener este factor de
equilibrio se llama “Altura invariante”.
● Es considerada una restricción adicional a la ya
presente en los Árboles Binarios de Búsqueda
de “Orden invariante”.
Ejemplo	AVL
Ejemplo	AVL
Ejemplo	AVL
Ejemplo	AVL
Ejemplo	AVL
Rotaciones
● Para poder re balancear estos árboles existen
mecanismos denominados rotaciones.
● Las rotaciones son de dos tipos:
● Izquierda
● Derecha
Rotaciones
● Ejemplo de rotación izquierda.
Rotaciones
● Ejemplo de rotación izquierda.
Rotaciones
● Ejemplo de rotación derecha.
Rotaciones
● Ejemplo de rotación doble (caso derecha-
izquierda).
Rotaciones	casos	dobles
Ejemplo	código	C#
GRACIAS	POR	SU	ATENCIÓN

Más contenido relacionado

La actualidad más candente

Método de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortMétodo de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortlinkinpark03
 
Presentacion arbol-binario
Presentacion arbol-binarioPresentacion arbol-binario
Presentacion arbol-binarioMariela Cabezas
 
Busqueda Binaria
Busqueda BinariaBusqueda Binaria
Busqueda BinariaITCV
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos Kaneki04
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamientodeff000001
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificaciónAlex Uhu Colli
 
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Rubi Veronica Chimal Cuxin
 
Estructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafosEstructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafosMiguel Rodríguez
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoTAtiizz Villalobos
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..NANO-06
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosJosé Antonio Sandoval Acosta
 

La actualidad más candente (20)

Método de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortMétodo de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sort
 
Presentacion arbol-binario
Presentacion arbol-binarioPresentacion arbol-binario
Presentacion arbol-binario
 
Busqueda Binaria
Busqueda BinariaBusqueda Binaria
Busqueda Binaria
 
Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
 
Metodo de busqueda
Metodo de busquedaMetodo de busqueda
Metodo de busqueda
 
Árboles Multicamino, B y B+
Árboles Multicamino, B y B+Árboles Multicamino, B y B+
Árboles Multicamino, B y B+
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificación
 
Hash mitad al cuadrado pdf
Hash mitad al cuadrado pdfHash mitad al cuadrado pdf
Hash mitad al cuadrado pdf
 
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
 
Estructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafosEstructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafos
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..
 
Listas
ListasListas
Listas
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
 

Similar a Árboles binarios, ABB y AVL

Estructura de datos
Estructura de datosEstructura de datos
Estructura de datosnukeeHE
 
Estructura de datos unidad 4 y 5
Estructura de datos unidad 4 y 5Estructura de datos unidad 4 y 5
Estructura de datos unidad 4 y 5pootalex
 
Estructura de Datos - Unidad IV: Estructuras no Lineales
Estructura de Datos - Unidad IV: Estructuras no LinealesEstructura de Datos - Unidad IV: Estructuras no Lineales
Estructura de Datos - Unidad IV: Estructuras no LinealesJosé Antonio Sandoval Acosta
 
3 estructuras no lineales estáticas y dinámicas
3  estructuras no lineales estáticas y dinámicas3  estructuras no lineales estáticas y dinámicas
3 estructuras no lineales estáticas y dinámicasEliezer Cordova
 
Arboles de busqueda
Arboles de busquedaArboles de busqueda
Arboles de busquedaHenry Barros
 
Estructura de dato unidad 4
Estructura de dato unidad 4Estructura de dato unidad 4
Estructura de dato unidad 4lenithoz
 
Presentación Árbol Binario
Presentación Árbol BinarioPresentación Árbol Binario
Presentación Árbol BinarioFernando Solis
 
Programación 3: árboles de búsqueda equilibrados
Programación 3: árboles de búsqueda equilibradosProgramación 3: árboles de búsqueda equilibrados
Programación 3: árboles de búsqueda equilibradosAngel Vázquez Patiño
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binariosfavi_hola
 
Declarar Arboles. Operaciones. Ejemplospdf
Declarar Arboles. Operaciones. EjemplospdfDeclarar Arboles. Operaciones. Ejemplospdf
Declarar Arboles. Operaciones. EjemplospdfLENNYGALINDEZ
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binariosdaniel9026
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discretaJunior Soto
 
Operaciones Básicas con Árboles
Operaciones Básicas con ÁrbolesOperaciones Básicas con Árboles
Operaciones Básicas con ÁrbolesFernando Solis
 

Similar a Árboles binarios, ABB y AVL (20)

ARBOLES BINARIOS
ARBOLES BINARIOSARBOLES BINARIOS
ARBOLES BINARIOS
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Estructura de datos unidad 4 y 5
Estructura de datos unidad 4 y 5Estructura de datos unidad 4 y 5
Estructura de datos unidad 4 y 5
 
Estructura de Datos - Unidad IV: Estructuras no Lineales
Estructura de Datos - Unidad IV: Estructuras no LinealesEstructura de Datos - Unidad IV: Estructuras no Lineales
Estructura de Datos - Unidad IV: Estructuras no Lineales
 
3 estructuras no lineales estáticas y dinámicas
3  estructuras no lineales estáticas y dinámicas3  estructuras no lineales estáticas y dinámicas
3 estructuras no lineales estáticas y dinámicas
 
Arboles de busqueda
Arboles de busquedaArboles de busqueda
Arboles de busqueda
 
Unidad 6
Unidad 6Unidad 6
Unidad 6
 
Estructura de Datos - Estructuras no lineales
Estructura de Datos - Estructuras no linealesEstructura de Datos - Estructuras no lineales
Estructura de Datos - Estructuras no lineales
 
Estructura de dato unidad 4
Estructura de dato unidad 4Estructura de dato unidad 4
Estructura de dato unidad 4
 
Arboles TDAS
Arboles TDASArboles TDAS
Arboles TDAS
 
Arboles
ArbolesArboles
Arboles
 
Presentación Árbol Binario
Presentación Árbol BinarioPresentación Árbol Binario
Presentación Árbol Binario
 
Programación 3: árboles de búsqueda equilibrados
Programación 3: árboles de búsqueda equilibradosProgramación 3: árboles de búsqueda equilibrados
Programación 3: árboles de búsqueda equilibrados
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binarios
 
Declarar Arboles. Operaciones. Ejemplospdf
Declarar Arboles. Operaciones. EjemplospdfDeclarar Arboles. Operaciones. Ejemplospdf
Declarar Arboles. Operaciones. Ejemplospdf
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binarios
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discreta
 
Operaciones Básicas con Árboles
Operaciones Básicas con ÁrbolesOperaciones Básicas con Árboles
Operaciones Básicas con Árboles
 
Arboles
Arboles Arboles
Arboles
 
ARBOLES
ARBOLESARBOLES
ARBOLES
 

Más de Alvaro Enrique Ruano

Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)Alvaro Enrique Ruano
 
Introducción al análisis de algoritmos
Introducción al  análisis de algoritmosIntroducción al  análisis de algoritmos
Introducción al análisis de algoritmosAlvaro Enrique Ruano
 
Ordenamientos por selección y Shell
Ordenamientos por selección y ShellOrdenamientos por selección y Shell
Ordenamientos por selección y ShellAlvaro Enrique Ruano
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresAlvaro Enrique Ruano
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserciónAlvaro Enrique Ruano
 
Programación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesProgramación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesAlvaro Enrique Ruano
 
Programación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoProgramación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoAlvaro Enrique Ruano
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosAlvaro Enrique Ruano
 
Análisis de una inversión en activos financieros negociados por medio de la B...
Análisis de una inversión en activos financieros negociados por medio de la B...Análisis de una inversión en activos financieros negociados por medio de la B...
Análisis de una inversión en activos financieros negociados por medio de la B...Alvaro Enrique Ruano
 
Solución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de softwareSolución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de softwareAlvaro Enrique Ruano
 

Más de Alvaro Enrique Ruano (16)

Resumen caso Enron
Resumen caso EnronResumen caso Enron
Resumen caso Enron
 
Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)
 
Estructuras de datos lineales
Estructuras de datos linealesEstructuras de datos lineales
Estructuras de datos lineales
 
Introducción al análisis de algoritmos
Introducción al  análisis de algoritmosIntroducción al  análisis de algoritmos
Introducción al análisis de algoritmos
 
Ordenamientos rápido y mezcla
Ordenamientos rápido y mezclaOrdenamientos rápido y mezcla
Ordenamientos rápido y mezcla
 
Ordenamientos por selección y Shell
Ordenamientos por selección y ShellOrdenamientos por selección y Shell
Ordenamientos por selección y Shell
 
Recursividad directa e indirecta
Recursividad directa e indirectaRecursividad directa e indirecta
Recursividad directa e indirecta
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructores
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserción
 
Programación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesProgramación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clases
 
Programación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoProgramación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismo
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Técnicas de programación
Técnicas de programaciónTécnicas de programación
Técnicas de programación
 
Análisis de una inversión en activos financieros negociados por medio de la B...
Análisis de una inversión en activos financieros negociados por medio de la B...Análisis de una inversión en activos financieros negociados por medio de la B...
Análisis de una inversión en activos financieros negociados por medio de la B...
 
Solución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de softwareSolución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de software
 

Árboles binarios, ABB y AVL

  • 3.
  • 4. Árboles • Si bien una estructura dinámica lineal brinda varias ventajas sobre las estructuras estáticas contiguas, todavía tiene una gran limitante, el acceso a los elementos se debe realizar de forma secuencial. • Para los casos donde esto es un problema aparecen las estructuras de datos no lineales (estructuras multienlazadas), en especial los árboles.
  • 5. Árboles • El árbol es una estructura de datos fundamental en informática, muy utilizada en todos sus campos. • Algorítmica: métodos de clasificación y búsqueda • Compiladores: árboles sintácticos de una gramática • Inteligencia artificial: árboles de juegos, árboles de decisión, etc. • Se utilizan principalmente para representar datos con relación jerárquica.
  • 6. Árboles • Un árbol es una estructura de datos homogénea, dinámica y no lineal, en la que cada nodo (elemento) puede tener varios nodos posteriores, pero sólo puede tener un nodo anterior. • Un árbol es: • Dinámico: Su estructura puede cambiar durante la ejecución de un programa. • No lineal: Cada elemento del árbol puede contener varios elementos que dependen de él.
  • 7. Árboles • Las definiciones importantes a tener en cuenta son: • Nodo: Son todos los vértices o elementos del árbol. • Raíz: Es el nodo del cual se derivan todos los demás nodos. Solamente se puede tener una en cada árbol. • Nodo terminal (hoja, leaf node): Es aquel nodo que no contiene ningún subárbol • Camino (arco): Enlace entre dos nodos consecutivos.
  • 8. Árboles • Las definiciones importantes a tener en cuenta son: • Nodo Padre: Nodo antecesor o ascendiente del actual. La raíz no tiene un nodo padre. • Nodos Hermanos: Nodos de un mismo padre. • Nodos Interiores: Nodos que no son hojas ni raíces. • Bosque: Colección de dos o más árboles.
  • 9. Árboles • Las definiciones importantes a tener en cuenta son: • Rama: Camino que termina en una hoja. • Nivel de un nodo: Longitud del camino desde la raíz al nodo específico. Se dice que la raiz tiene un nivel 0. • Altura del árbol (profundidad): Número máximo de nodos de una rama. Equivale al nivel más alto de los nodos más uno. • Peso del árbol: Número de nodos hoja.
  • 11.
  • 12. Árboles • La definición de un árbol implica una estructura recursiva. • De la raíz se desprenden otros árboles denominados “subárboles del raíz” u offspring, los cuales a su vez tienen su propia raíz.
  • 14. Árboles Binarios ● Es un árbol en el que cada nodo puede tener únicamente 0, 1 o 2 subárboles. ● Los subárboles reciben el nombre de “Subárbol izquierdo” y “Subárbol derecho”. ● Puede ser implementado fácilmente en una computadora.
  • 16. Árboles Binarios ● Los árboles binarios tienen cierta terminología propia de su estructura. ● Árboles Similares: Son aquellos que tienen la misma estructura ● Árboles Equivalentes: Son aquellos que además de ser similares contienen la misma información. ● Árbol Equilibrado: Es aquel en que la altura de los dos subárboles de la raíz se diferencian en como máximo una unidad.
  • 17. Árboles Binarios ● Los árboles binarios tienen cierta terminología propia de su estructura. ● Árbol Completo: Es aquel en que todos los nodos tienen exactamente 0 o dos subárboles. ● Árbol Lleno: Es aquel árbol completo en el que todos los niveles están llenos. ● Árbol Degenerado: Es aquel árbol en que todos sus nodos tienen solamente un subárbol.
  • 24. Árboles Binarios ● Para los árboles binarios, especialmente para los árboles llenos se cumple lo siguiente: ● Para una altura H ○ La cantidad máxima de nodos N está dada por ((2^H) - 1) ○ La cantidad máxima de nodos n en el último nivel está dada por 2^(H-1) ● Para una cantidad de nodos N ○ La altura del árbol debe ser como mínimo log(n+1)
  • 25. Conversión a Binarios ● Existe un algoritmo sencillo para convertir cualquier árbol a Binario. ● Se copia la raíz. ● Se coloca el primer hijo del árbol tradicional como hijo izquierdo. ● Todos los hermanos de éste se colocan sucesivamente como hijos derechos. ● Se repite recursivamente en todas las ramas.
  • 26. Ejemplo de conversión ● Dado el siguiente árbol no binario.
  • 27. Ejemplo de conversión ● Se obtiene el siguiente árbol binario.
  • 28. Ejercicio ● Convierta el siguiente árbol en un árbol binario.
  • 29. Solución ● El árbol binario equivalente es:
  • 30. Representaciones ● Los árboles binarios pueden ser representados por medio de punteros.
  • 31. Representaciones ● Los árboles binarios pueden ser representados por medio de punteros.
  • 32. Representaciones ● Los árboles binarios pueden ser representados por medio de arrays.
  • 33. Recorridos ● El recorrido es el proceso que permite acceder una única vez a cada uno de los nodos del árbol. ● Al recorrer el árbol se debe examinar el contenido completo del mismo. ● Existen varios métodos de recorrer un árbol binario. ● Las tareas asociadas son: ○ Visitar la raíz ○ Recorrer el subárbol izquierdo ○ Recorrer el subárbol derecho
  • 34. Recorrido Pre-Orden ● Las tareas asociadas se realizan recursivamente en el siguiente orden: ○ Visitar la raíz ○ Recorrer el subárbol izquierdo ○ Recorrer el subárbol derecho
  • 35. Recorrido In-Orden ● Las tareas asociadas se realizan recursivamente en el siguiente orden: ○ Recorrer el subárbol izquierdo ○ Visitar la raíz ○ Recorrer el subárbol derecho
  • 36. Recorrido Post-Orden ● Las tareas asociadas se realizan recursivamente en el siguiente orden: ○ Recorrer el subárbol izquierdo ○ Recorrer el subárbol derecho ○ Visitar la raíz
  • 37. Ejercicio ● Recorra el siguiente árbol según los tres métodos descritos.
  • 38. Solución ● La solución al ejercicio anterior es:
  • 39. Ejercicio ● Recorra el siguiente árbol según los tres métodos descritos.
  • 40. Solución ● La solución al ejercicio anterior es:
  • 42. El problema de las búsquedas ● Cuando analizamos los métodos de búsqueda secuencial y binario determinamos que el segundo es mucho más eficiente. ● El problema del método binario es que necesita que el listado se encuentre ordenado previamente. ● Los procesos para mantener un arreglo o lista ordenados luego de las inserciones y eliminaciones son muy complejos.
  • 43. Árboles binarios de búsqueda ● Es una estructura donde los elementos pueden ser eficazmente localizados, insertados o borrados. ● Es ideal para los casos donde se tienen que manejar gran número de operaciones. ● Esta estructura también es llamada “Árbol binario clasificado”, “Binary search tree” o “ABB”.
  • 44. Árboles binarios de búsqueda ● El dato que contendrá el árbol debe permitir clasificación, es decir, debe poder compararse con otro para determinar si es mayor, menor o igual. ● El primer valor recibido siempre será la raiz. ● En cualquier nodo, todos los valores del subárbol izquierdo son menores o iguales al valor del nodo. ● Igualmente, todos los valores del subárbol derecho son mayores al valor del nodo.
  • 46. Árboles binarios de búsqueda ● En este tipo de árboles el recorrido in-orden siempre recorrerá los valores de forma ordenada.
  • 47. Búsqueda ● La búsqueda en un árbol binario no es más que una búsqueda binaria. ● En lugar de calcular un nuevo centro utilizamos al padre como centro. ● Si no se encuentra el elemento, nos movemos hacia el subárbol izquierdo o derecho según corresponda. ● La condición de terminación es llegar a un nodo hoja o encontrar el elemento buscado.
  • 48. Inserción ● Se debe recorrer el árbol buscando la posición ideal para insertarlo. ● Se evalúa el padre, si es nulo se inserta en esta posición. ● Si no es nulo se evalúa si corresponde insertarlo a la izquierda o a la derecha ● Se realiza una llamada recursiva al método de inserción para el subárbol correspondiente.
  • 49. Inserción ● Construya el árbol binario de búsqueda para la siguiente secuencia de entradas.
  • 50. Inserción ● El árbol resultante es el siguiente.
  • 51. Inserción ● Construya el árbol binario de búsqueda para la siguiente secuencia de entradas.
  • 52. Inserción ● El árbol resultante es el siguiente.
  • 53. Eliminación ● Es la operación más complicada. ● Se debe conservar el orden de los elementos del árbol. ● Se consideran diferentes casos según la posición del nodo en el árbol: ○ Si es una hoja ○ Si solo tiene un descendiente ○ Si tiene los dos descendientes
  • 54. Eliminación ● Cuando es una hoja, simplemente se suprime. ● Ejemplo: Eliminar C
  • 55. Eliminación ● Cuando tiene solamente un hijo, se borra el padre y se sustituye por el hijo. ● Ejemplo: Eliminar F
  • 56. Eliminación ● Cuando tiene los dos hijos, se sustituye por el elemento situado lo más a la derecha del subárbol izquierdo o más a la izquierda del subárbol derecho. ● Ejemplo: Eliminar B o D
  • 57. Árbol AVL ● Es un árbol binario de búsquedas auto balanceable. ● Es decir que la rama izquierda y la derecha no difieren en altura por más de uno. ● Fue ideado en 1962 por los matemáticos Georgii Adelson-Velskii y Yevgeniy Landis. ● La razón de mantener este balance es que el crecimiento de una operación de búsqueda se mantenga lo más cercano a O(logn).
  • 58. Árbol AVL ● Es un árbol binario de búsquedas auto balanceable. ● Es decir que la rama izquierda y la derecha no difieren en altura por más de uno. ● Fue ideado en 1962 por los matemáticos Georgii Adelson-Velskii y Yevgeniy Landis. ● La razón de mantener este balance es que el crecimiento de una operación de búsqueda se mantenga lo más cercano a O(logn).
  • 59. Factor de Equilibrio ● La principal diferencia entre los ABB y los AVL es la existencia del “Factor de Equilibrio”. ● Es un número que se calcula como “altura del subárbol izquierdo” - “altura del subárbol derecho”. ● Este se recalcula al realizar una inserción o borrado. ● Si el valor absoluto del factor de equilibrio es mayor a 1 se debe hacer el proceso de Rotación.
  • 60. Factor de Equilibrio ● La propiedad de mantener este factor de equilibrio se llama “Altura invariante”. ● Es considerada una restricción adicional a la ya presente en los Árboles Binarios de Búsqueda de “Orden invariante”.
  • 66. Rotaciones ● Para poder re balancear estos árboles existen mecanismos denominados rotaciones. ● Las rotaciones son de dos tipos: ● Izquierda ● Derecha
  • 67. Rotaciones ● Ejemplo de rotación izquierda.
  • 68. Rotaciones ● Ejemplo de rotación izquierda.
  • 69. Rotaciones ● Ejemplo de rotación derecha.
  • 70. Rotaciones ● Ejemplo de rotación doble (caso derecha- izquierda).