Árboles clase 6 Apoyo de Práctica. Resumen ●Árboles ○Concepto ○Características ○Dinámica ○Recorridos o barridos. ●Ejercicio Sugerido.

Slides:



Advertisements
Presentaciones similares
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS.
Advertisements

ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS DE BUSQUEDA.
ÁRBOLES EN C UNIVERSIDAD “ALONSO DE OJEDA” Facultad de Ingeniería
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
1 Extensión de un Estructura de Datos Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
Programación y Estructuras de Datos
Operaciones sobre un árbol
Tema 4 Árboles. Conceptos Generales..
ESTRUCTURAS DE DATOS AVANZADAS
ÁRBOLES DE EXPRESION.
Definición Estructura de datos jerárquica (no lineal) que puede representarse como un conjunto de nodos enlazados entre sí por medio de ramas. Formalmente,
Slide 7-1 Copyright © 2003 Pearson Education, Inc. Figure: Estructuras de datos.
Cont. Arbol Binario de Búsqueda (2). Sobre los recorridos Las versiones recursivas de los recorridos son costosas debido a la gran cantidad de llamadas.
Estructuras dinámicas de datos, TAD Lista, parte 2
Listas circulares.
ÁRBOLES BINARIOS DE BÚSQUEDA
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
ARBOLES ESTRUCTURAS DE DATOS.
Estructuras.
Estructura de Datos y Algoritmos
Arboles M.C. José Andrés Vázquez FCC/BUAP
ARBOLES ESTRUCTURAS DE DATOS.
Árboles Recomendado: 1. Nivelación Funciones
Árboles Binarios Estructuras de Datos.
Árboles de Búsqueda Binaria
Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.
Algoritmos y estructura de datos en I.O.
R ECORRIDO DE ÁRBOLES BINARIOS POR AMPLITUD O POR NIVELES Elaborado por: Luis Alberto Fonseca Esquivel Eduardo Acosta Casillas.
Arboles Binarios.
A YUDANTÍA 5: A RBOLES Carlos Pulgar R. Mail: Página Ayudantía:
Listas Dinámicas.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
GRAFOS ESTRUCTURA DE DATOS. INTRODUCCION Los grafos son estructuras de datos Representan relaciones entre objetos Relaciones arbitrarias, es decir No.
Introducción a punteros en C
Estructura de Datos Luis Humeau Waldi Saturno
L ISTAS ENLAZADAS M.IA. Daniel Alejandro García López.
Programación lógica funcional Árboles Binarios.  El siguiente trabajo trata sobre la estructura de datos no lineales llamada árbol. Esta estructura se.
Árboles binarios. Algoritmos básicos
Universidad Autónoma del Estado de México
Estructuras PILA - COLA - LISTA.
Tema 3 Árboles. Conceptos Generales. Curso 2014/2015 ETSISI UPM.
Árboles Binarios * Recorridos * Tipo
TAD’s ARBOLES GENERALIZADOS
Tema 4 Árboles Prof. Oscar Adolfo Vallejos.
Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2016
Listas enlazadas particulares
LISTAS..
Listas Dinámicas.
ÁRBOLES El árbol es una estructura de datos muy importante en informática y en ciencias de la computación. Los árboles son estructuras no lineales,
ÁRBOLES ESTRUCTURA DE DATOS II ING. CARLOS ALBERTO PULLAS.
ABSTRACCION DE DATOS   Estructura de Datos Básicos: En programación una estructurad de datos, es una forma particular de organizar datos en una computadora.
Arboles M.C. José Andrés Vázquez FCC/BUAP
Árboles (Trees) Árboles Árboles binarios Recorridos de árboles
Árboles Binarios de Búsqueda (ABB)
GRAFOS ESTRUCTURAS DE DATOS.
TEMAS *Arboles Binarios *listas Abiertas y Cerradas - Inserción - Recorrido - Eliminación *Pilas - Concepto - Inserción - Recorrido -
EL TDA COLA Estructuras de Datos.
Listas ligadas Dra. María de Lourdes López García
M. en TI. Omar Téllez Barrientos DOCENTE DE INFORMÁTICA GENERACIÓN DE PSEUDOCÓDIGOS Y ALGORITMOS
GRAFOS ESTRUCTURA DE DATOS. INTRODUCCION Los grafos son estructuras de datos Representan relaciones entre objetos Relaciones arbitrarias, es decir No.
Arboles. Árboles ¿Qué son? Son Estructuras de datos “No lineales”” ¿Para que se utilizan? Representar Fórmulas Algebraicas Organizar Objetos Inteligencia.
ÁRBOLES DE EXPRESION. Un árbol de expresión sirve para evaluar expresiones del tipo: (a+b)*c/d Para que un árbol represente una expresión se deben tomar.
METODOS DE ORDENAMIENTO CHRISTIAN MICHAEL OBANDO GARCES JOAO ADRIAN BARIONUEVO.
Árboles Binarios Estructuras de Datos.
COLAS O LINEA DE ESPERA EN C# SHARP. ¿QUE ES UNA COLA O LINEA DE ESPERA?  Es una estructura de datos que almacena elemento en una lista y permite acceder.
Árboles Binarios Recorridos.
Árboles Binarios Estructuras de Datos. Las estructuras dinámicas son las en la ejecución varia el número de elementos y uso de memoria a lo largo del.
UNIDAD 1 Análisis semántico 1.1 ARBOLES DE EXPRESIONES.
Grafos. Concepto: Un Grafo no es más que un conjunto de nodos o vértices que se encuentran relacionados con unas aristas. Además, los vértices tienen.
Transcripción de la presentación:

Árboles clase 6 Apoyo de Práctica

Resumen ●Árboles ○Concepto ○Características ○Dinámica ○Recorridos o barridos. ●Ejercicio Sugerido

Estructuras Básica Autoreferenciada Tanto las listas, pilas como las colas son estructuras lineales que utilizan: struct nodoLista { char dato; // pueden ser más de un campo, u otro struct struct nodoLista * ptrSiguiente; }; typedef struct nodoLista NodoLista; typedef NodoLista * ptrNodoLista; Pero estas no son apropiadas para representar estructuras jerárquicas del tipo: ●Organigramas ●Un File System de un S.O→ Para esto se usan Árboles → ●etc

Arboles - Concepto Las estructuras de datos denominadas árboles de búsqueda binario, se construyen con el objetivo de lograr organizar la información de una manera conveniente, para facilitar su acceso posterior. Características ●Es una estructura no lineal de datos, de dos dimensiones. ●Cada nodo contiene enlaces (punteros) a dos o más nodos. ●El nodo raíz es el primer nodo del árbol del cual penden los demás nodos. ●Cada puntero de cada nodo apunta a dos nodos que constituyen ramas. Cada uno de estos almacena la dirección de otras estructuras o NULL. Nota: Si bien existen diferentes tipos de árboles, nos concentraremos en árboles binarios búsqueda.

Árboles Binario de Búsqueda - Dinámica En todo Árbol Binario de Búsqueda, los menores van a la izquierda del nodo, y los mayores a la derecha. Alta ●Se recorre el árbol, teniendo en cuenta si el valor a ingresar es mayor o menor que el nodo a ingresar. ●Por Ejemplo, para dar de alta el 9 y el 5. ? Baja ●Se busca el nodo, por ej 3. ●Se toma cada sub-arbol (1) y (6,4,7) y se los inserta a modo de árbol binario de búsqueda. ?

Recorrido PreOrden Algoritmo recursivo: Procesa el Nodo Recorre SubÁrbol Izquierdo Recorre SubÁrbol Derecho Resultado del Recorrido

Recorrido PreOrden Algoritmo: Procesa el Nodo Recorre SubArbol Izquierdo Recorre SubArbol Derecho A continuación: Simule el recorrido del siguiente árbol de estudio. Resultado del Recorrido ?

Recorrido InOrden Algoritmo recursivo: Recorre SubÁrbol Izquierdo Procesa el Nodo Recorre SubÁrbol Derecho Resultado del Recorrido ¿Que observa en el conjunto de salida de este recorrido?

Recorrido InOrden Algoritmo: Recorre SubÁrbol Izquierdo Procesa el Nodo Recorre SubÁrbol Derecho A continuación: Simule el recorrido del siguiente árbol de estudio. Resultado del Recorrido ?

Recorrido PostOrden Algoritmo: Recorre SubÁrbol Izquierdo Recorre SubÁrbol Derecho Procesa el Nodo Resultado del Recorrido

Recorrido PostOrden Algoritmo: Recorre SubÁrbol Izquierdo Recorre SubÁrbol Derecho Procesa el Nodo A continuación: Simule el recorrido del siguiente árbol de estudio. Resultado del Recorrido ?

Resumen ●Árboles ●Ejercicio sugerido

Ejercicios Sugeridos 1)Ejercicio de Lista Ordenada - con extensión a Pila Dado el caso de estudio del ej 1 de teoría “Crear un árbol binario y lo recorrerlo en preorden, inorden, y en postOrden” Que usa la estructura y tipos siguientes: /* estructura autoreferenciada */ struct nodoArbol { struct nodoArbol *ptrIzq;/*link al subárbol izquierdo*/ int dato; /* valor del nodo */ struct nodoArbol *ptrDer; /*link al subárbol derecho*/ }; typedef struct nodoArbol NodoArbol;// sinónimo de la estructura nodoArbol typedef NodoArbol *ptrNodoArbol; // sinónimo de NodoArbol

Ejercicios Sugeridos - Estratégia Se pide: 1.Genere una función que reciba como parámetros la raíz y un valor de dato a buscar y devuelva si existe en el árbol o no. Se propone usar el sig prototipo. int buscaElemento( ptrNodoArbol ptrRaiz, int valor ); a.// donde esta función devuelve 1 si existe 0 caso contrario. Modifique la aplicación para que pruebe esta función luego de generar el árbol. 2.Genere una función que elimine un elemento determinado. Para facilitar esta tarea se propone usar el caso de estudio dado en teoría, utilice la siguiente función para generarlo. /* Genera nodos aleatorios en el árbol */ void generaNodosEjTeoria( ptrNodoArbol * pptrRaiz) { int i; int elementos[12] = {47,25,77,11,7,17,43,31,44,65, 68,93}; /* inserta valores al azar entre 1 y 15 en el árbol */ for ( i = 0; i < 12; i++ ) { printf( "agregando %5d\n", elementos[i] ); insertaNodo( pptrRaiz, elementos[i] ); }

Ejercicios Sugeridos - Estratégia Se propone utilice para este cometido utilizar el siguiente prototipo int eliminaNodo(ptrNodoArbol ptrRaiz,int valor);//1=Existe 0=contrario. 3. Genere una función que muestre el árbol recorriéndolo por niveles. Para facilitar esta tarea se propone utilice el caso de estudio dado en teoría. Se propone utilizar el siguiente pseudocodigo y además una estructura auxiliar cola. int recorrePorNiveles( ptrNodoArbol ptrRaiz ); Definimos la cola Q; //Estructura auxiliar Definimos un puntero aux //Puntero a la cola Encoalmos la raiz en Q; //Encolamos la raiz mientras(tenga elementos) hacer aux = sacar(Q); //sacamos un elemento de la cola Mostramos(aux); //realizamos operaciones sobre el nodo aux si (Der(aux) <> NULL) //preguntamos si aux tiene árbol derecho encolamos(Der(aux)); fin-Si si (Izq(aux) <> NULL) //preguntamos si aux tiene árbol izquierdo encolamos(Izq(aux)); fin-Si fin-Mientras

Ejercicios Sugeridos - Resultado Como resultado se pretende obtener Recorrido Por Niveles nivel 1: 47 nivel 2: nivel 3: nivel 4:

Ejercicios Sugeridos - Más Consignas Se propone utilice para este cometido utilizar el siguiente prototipo int eliminaNodo(ptrNodoArbol ptrRaiz,int valor);//1=Existe 0=contrario. 4. Genere una función que obtenga la altura del árbol. int cantNodosArbol( ptrNodoArbol ptrRaiz ); Como resultado se pretende obtener Cantidad de Nodos de árbol raíz ( 47 ) = Genere una función que obtenga la cantidad de elementos de un árbol. Se propone utilice para este cometido utilizar el siguiente prototipo int alturaArbol( ptrNodoArbol ptrRaiz ); //puede modificar recorrePorNivel para lograr esto? Como resultado se pretende obtener Altura de árbol raíz ( 47 ) = 4

Ejercicios Sugeridos - Objetivos Objetivos ● Comprender la estructura de los árboles. ● Comprender las búsquedas en árboles binarios. ● Comprender cómo se inserta y se da de baja un elemento. ● Comprender para que se usan.

Bibliografía