Arboles presentacion
Upcoming SlideShare
Loading in...5
×
 

Arboles presentacion

on

  • 2,979 views

 

Statistics

Views

Total Views
2,979
Views on SlideShare
2,979
Embed Views
0

Actions

Likes
0
Downloads
58
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Arboles presentacion Arboles presentacion Presentation Transcript

  • UNIVERSIDAD TÉCNICA DE MANABÍExt. En El Carmen
    INTEGRANTES:
    • Mite Sandra
    • Ferrìn Jenny
    TUTORA:
    ING. Roció Mendoza
    MATERIA
    Estructura de Datos
    4to. Semestre de
    Ingeniería en Sistema
  • TEMAS
    *Arboles Binarios *listas Abiertas y Cerradas - Inserción - Recorrido - Eliminación*Pilas - Concepto - Inserción - Recorrido - Eliminación * Colas - Inserción - Recorrido - Eliminación *Manejo de Memoria Estática * Manejo de Memoria Dinámica * Arboles Definicial * tipos de Recorrido -Orden - In-Orden - Post-Orden * Que son Arboles AVL * Arboles Equilibrados AVL
  • Árboles binarios
    Un árbol binario en un árbol en el cual cada nodo puede tener como máximo dos hijos.
    Recursivamente un árbol binario puede definirse como: un árbol vacío, o un nodo raíz con un subárbol izquierdo y un subárbol derecho.
    Raíz
    Sub árbol
    Izquierdo
    Sub árbol
    Derecho
  • A
    B
    D
    C
    F
    E
    I
    G
    H
    QUÉ ES UN ÁRBOL?
    Un árbol es una estructura de datos formada por nodos los cuales están conectados por aristas.
    • Es una estructura de datos jerárquica
    • La relación entre los elementos es de uno a muchos.
    nodos
    Aristas
  • A
    B
    D
    C
    F
    E
    I
    H
    G
    • Un árbol puede estar vacío; es decir no contener ningún nodo.
    • Raíz: es el nodo que está al tope del árbol. Un árbol solo tiene una raíz.
    raíz
  • A
    B
    D
    C
    F
    E
    I
    H
    G
    Conceptos Básicos
    Un conjunto de nodos y aristas se define como un árbol y solo si existe un único camino desde la raíz hasta cada uno de sus nodos.
  • A
    B
    D
    C
    F
    E
    I
    H
    G
    • Padre: En un árbol toda rama va de un nodo n1 a un nodo n2, se dice que n1 es padre de n2.
    Ejemplo: C es padre de E y de F, D es padre de G, de H y de I.
    • Hijo: todo nodo puede tener mas de una arista que lo lleva a otro nodo por debajo de él. Estos nodos que se encuentran por debajo de un nodo dado se llaman hijos. Ejemplo: E es hijo de C, B es hijo de A, H es hijo de D
    padres
    hijos
    • Hojas: son aquellos nodos que no tienen hijos. En un arbol solo puede haber una raíz pero pueden haber muchas hojas. Ejemplo: B,E,F,G,H,I son hojas.
    • Subárbol: Cualquier nodo se puede considerar como la raíz de un subárbol.
  • A
    B
    D
    C
    F
    E
    I
    H
    G
    • Nivel: el nivel de un nodo es el numero de generaciones que hay desde la raíz hasta él.
    El nivel de la raíz es cero.
    • Profundidad o altura: es la longitud del camino mas largo desde la raíz hasta una hoja.
    La profundidad de este árbol es 2. La raíz tiene profundidad 0.
    Nivel 0
    Nivel 1
    Nivel 2
  • LISTAS ABIERTAS
    La forma más simple de estructura dinámica es la lista abierta. En esta forma los nodos se organizan de modo que cada uno apunta al siguiente, y el último no apunta a nada, es decir, el puntero del nodo siguiente vale NULL.
  • INSERCION
    Este es, evidentemente, el caso más sencillo. Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a él, además el puntero a la lista valdrá NULL:
  • INSERCION UN ELEMENTO EN LA ÚLTIMA POSICIÓN DE UNA LISTA
    EJEMPLO:
  • LISTAS CIRCULARES
    Una lista circular es una lineal, en la que el ultimo elemento enlaza con el primero. Entonces es posible acceder a cualquier elemento de la lista desde cualquier punto dado. Las operaciones sobre una lista circular resultan mas sencillas, ya que se evitan casos especiales.
    Cuando recorremos una lista circular, diremos que hemos llegado al final de la misma, cuando nos encontramos de nuevo en el punto de partida; suponiendo, desde luego, que el punto de partida se guarda de alguna manera en la lista, por ejemplo
    Con un puntero fijo al mismo.
  • +++4+
    00
    +4
    -1
    0
    Listas Circular
    Como ejemplo de utilización de listas circulares, realizaremos la suma de ecuaciones algebraicas o polinómicas de las variables x, y, z.. Por ejemplo:
    2x³y + 4xy³- y⁴ más 2xy³-xy
    Cada polinomio será representado como una lista en la que cada elemento representa un término nulo, como se indica a continuación:
    COEFICIENTE
    SIGUIENTE
  • FUNCIONES
    Leer Polinomio
    Leer_ polinomio(&polP);
    Leer_ polinomio(&polQ);
    2. Inicializar
    Inicializar(&polP);
    Inicializar(&polQ);
    3. Comparar
    Comparar(&polP ,&polQ);
    Eliminar Términos
    Eliminar_Término(PolQ);
    5. Escribir Polinomios
    Escribir_polinomio(polQ);
  • PILAS
    • CREAR: Se crea la pila vacía
    • APILAR: Se añade un elemento a la pila (push)
    • DESAPILAR: Se elimina el elemento frontal de la pila(pop)
    • CIMA: Devuelve el elemento que esta en la cima de la pila(top o peek)
    • VACIA: Devuelve cierto si la pila esta vacía o falso en caso contrario
  • 1.- Ejemplo de la cola
    15
    20
    9
    18
    19
    La particularidad de una estructura de datos de cola es el hecho de que sólo podemos acceder al primer y al último elemento de la estructura. Así mismo, los elementos sólo se pueden eliminar por el principio y sólo se pueden añadir por el final de la cola.
    Ejemplos de colas en la vida real serían: personas comprando en un supermercado, esperando para entrar a ver un partido de béisbol, esperando en el cine para ver una película, una pequeña peluquería, etc. La idea esencial es que son todos líneas de espera.
    2.-vamos a insertar el 13 en la cola
    15
    20
    9
    18
    19
    13
    3.-Sacamos al frente de la cola
    20
    9
    18
    19
    13
    COLAS
  • MEMORIA ESTATICA
    La forma más fácil de almacenar el contenido de una variable en memoria en tiempo de ejecución es en memoria estática o permanente a lo largo de toda la ejecución del programa.
    La asignación de memoria puede hacerse en tiempo de compilación y los objetos están vigentes desde que comienza la ejecución del programa hasta que termina.
  • EJEMPLO:
    liberación de Memoria Estática
    4
    20
    20
    20
    20
    14
    8
    14
    8
    8
    6
    8
    6
    8
    4
    8
    4
    4
  • MANEJO DE UNA MEMORIA ESTÀTICA
    VENTAJAS
    DESVENTAJAS
    En algunos casos se pueden desperdiciar memoria
    Es una memoria fija
    Fácil de almacenar datos
    En otros casos pueden que ser que los datos sea grande el espacio asignado.
    Es una sola casilla
    Es secuencial
    Desperdicia espacio liberado
    Desperdicia espacio liberado
  • MEMORIA DINAMICA
    La memoria dinámica es un espacio de almacenamiento que se solicita en tiempo de ejecución. De esa manera, a medida que el proceso va necesitando espacio para más líneas, va solicitando más memoria al sistema operativo para guardarlas.
    Mejor ajuste: Busca asignar el espacio más pequeño de los espacios con capacidad suficiente.
    Peor ajuste: Asigna el hueco más grande. Una vez más, se debe de buscar en toda la tabla de huecos a menos que esté organizada por tamaño
  • EJEMPLO
    Liberación De Memoria Estática
    20
    20
    14
    20
    14
    14
    8
    8
    8
    4
    2
    4
    6
    46
  • MANEJO DE UNA MEMORIA ESTÀTICA
    VENTAJAS
    DESVENTAJAS
    En algunos casos se pueden desperdiciar memoria
    No es secuencial
    Utiliza un puntero
    En otros casos pueden que ser que los datos sea grande el espacio asignado.
    Para ubicación de un registro
    Debe ser refrescada
    Desperdicia espacio liberado
    Una función que asigna a Malloc
    Desperdicia espacio liberado
  • TIPOS DE RRECORRIDO
    A
    B
    C
    F
    G
    D
    E
    Pre-order:
    Procesar nodo
    Procesar árbol izquierdo
    Procesar árbol derecho
    In-order:
    Procesar árbol izquierdo
    Procesar nodo
    Procesar árbol derecho
    Post-order:
    Procesar árbol izquierdo
    Procesar árbol derecho
    Procesar nodo
    Pre-orden: A, B, D, E, C, F, G
    In-orden: D, B, E, A, F, C, G
    Post-orden: D, E, B, F, G, C, A
  • ÁRBOLES EQUILIBRADOS AVL.
    Un árbol AVL (llamado así por las iníciales de sus inventores: Adelson-Velskii y Landis) es un árbol binario de búsqueda en el que para cada nodo, las alturas de sus subárboles izquierdo y derecho no difieren en más de 1.
    Los AVL son también ABB, de modo que mantienen todas las operaciones que poseen éstos. Las nuevas operaciones son las de equilibrar el árbol, pero eso se hace como parte de las operaciones de insertado y borrado.
  • Ejemplos de arboles equilibrados
    ESTE ES UN ARBOL AVL
    NO ES ÀRBOL AVL
  • Inserción externa por la derecha.
    Si se inserta nodo F, en la rama externa más larga del subárbol derecho: La relación de orden del árbol binario es: A<B<C<D<E<F
  • Inserción interna por la derecha.
    Si se inserta nodo D, en la rama interna más larga del subárbol derecho.
    Con orden: A<B<C<D<E<F
  • Veamos ahora la forma en que puede afectar una inserción en un árbol AVL y la forma en que deberíamos reorganizar los nodos de manera que siga equilibrado. Consideremos el esquema general de la siguiente figura, supongamos que la inserción ha provocado que el subárbol que cuelga de Ai pasa a tener una altura 2 unidades mayor que el subárbol que cuelga de Ad .
    ¿Qué operaciones son necesarias para que el nodo r tenga 2 subárboles que cumplan la propiedad de árboles AVL?.
  • La inserción se ha realizado en el árbol A. La operación a realizar es la de una rotación simple a la derecha sobre el nodo r resultando el árbol mostrado en la siguiente figura.
  • La inserción se ha realizado en el árbol B. (supongamos tiene raíz b, subárbol izquierdo B1 y subárbol derecho B2). La operación a realizar es la rotación doble izquierda-derecha la cual es equivalente a realizar una rotación simple a la izquierda sobre el nodo Ai y después una rotación simple a la derecha sobre el nodo r (por tanto, el árbol B queda dividido). El resultado se muestra en la figura siguiente.