SlideShare una empresa de Scribd logo
Árboles y esquemas
algorítmicos

   Tema III
Bibliografía

• Tema III (lecciones 15 a 22) del libro “Campos Laclaustra, J.:
  Estructuras de Datos y Algoritmos, Prensas Universitarias de
  Zaragoza, Colección Textos Docentes, 1995 “
• Capitulo 5 del libro “X. Franch: Estructuras de datos.
  Especificación, diseño e implementación, 3ª edición,
  Ediciones UPC, 2001”
• Libro: “Joyanes, L., Zahonero, I., Fernández, M. y Sánchez,
  L.: Estructuras de datos. Libro de problemas, McGraw Hill,
  1999.”, capítulos 8, 9 y 10
• Capítulos 6 a 8, y 11 a 15 del libro “Martí, Ortega, Verdejo:
  Estructura de datos y métodos algorítmicos.
  Ejercicios y problemas resueltos,
  Pearson Prentice Hall, 2003.”,

• Y muchos otros....
Árboles: concepto y
especificación algebraica

    (Lección 15…)
Conceptos, definiciones y terminología básica
• Árbol:
  – Conjunto de elementos de un mismo tipo,
    denominados nodos, que pueden representarse
    en un grafo no orientado, conexo y acíclico, en el
    que existe un vértice destacado denominado raíz
    • Por lo general es una estructura jerárquica…
  – Definición recursiva:
    • Un árbol n-ario (con n1) es un conjunto no vacío de
      elementos del mismo tipo tal que:
      – Existe un elemento destacado llamado raíz del árbol
      – el resto de los elementos se distribuyen en m subconjuntos
         disjuntos (0 m n ), llamados subárboles del árbol original,
         cada uno de los cuales es a su vez un árbol n-ario
Conceptos, definiciones y terminología básica
• Árbol ordenado:
  – Si en el conjunto de subárboles de un árbol n-ario
    se supone definida una relación de orden total, el
    árbol se denomina ordenado




Árbol ordenado con raíz X y
subárboles A1 … Am                    Árbol 3-ario de números enteros

     Leyenda:    Nodo         Árbol
Conceptos, definiciones y terminología básica
• Hoja:
  – Un árbol compuesto por un solo elemento se denomina
    hoja
                                        Raíz
                                    3                                 Nodo

                                                                       Árbol
                         6                9



                7               33             51
                                Hoja
    Hoja   15       55       Hoja              13       23      38
                                                                     Hoja
                                                Hoja     Hoja



                                                    Ejemplo de árbol 3-ario
Conceptos, definiciones y terminología básica
• Camino: un camino es una secuencia de árboles A1,..As, s1,
  tal que Ai+1 es subárbol de Ai, para todo 1is-1
• Longitud de camino: número de árboles en la secuencia del
  camino, menos 1
• Por convenio: diremos que existe un camino de longitud 0, de
  todo subárbol a si mismo
                                 3
  Camino desde
  el árbol de raíz
  el nodo 3,
                            6        9
  hasta el árbol                                     Camino desde
  cuya raíz es el                                    el nodo 9
  nodo 55, y su                                      hasta el 23, de
  longitud es 3    7            33       51          longitud 2


            15         55                 13    23     38
Conceptos, definiciones y terminología básica
    • Si en un árbol A existe un camino desde el subárbol A1 hasta el
       subárbol A2, se dice que A1 es antecesor de A2 y que A2 es
       descendiente de A1
Antecesores del árbol                                Antecesor del árbol
cuya raíz es el nodo                                 cuya raíz es el nodo
7, son los subárboles                                6, es el árbol cuya
que tienen como                                      raíz es el nodo 3
raíces: el nodo 6, y el                 3            Descendientes del
del nodo 3, y sus                                    árbol cuya raíz es el
descendientes son                                    nodo 6 son todos los
los subárboles que                 6        9        subárboles que
tienen como raíces el                                “cuelgan” de el.
nodo 15, y el del 55
                          7            33       51


                  15          55                13     23     38
Conceptos, definiciones y terminología básica
• Los antecesores o descendientes de un subárbol, distintos del
  mismo subárbol, se denominan propios
• El padre de un subárbol, es su primer antecesor propio, si existe
• Los hijos de un subárbol, son sus primeros descendientes
  propios, si existen
• Dos subárboles son hermanos, si tienen el mismo padre
                                  3
                                          Su padre es

    Sus hijos son            6        9



                    7            33          51


            15          55                   13     23      38


                                                        Sus hermanos son
Conceptos, definiciones y terminología básica
• La altura de un árbol es la longitud del camino más largo que
  puede encontrarse en el árbol
• La profundidad de un subárbol en un árbol, es la longitud del
  único camino existente desde el árbol hasta el subárbol
• Un nivel, es el conjunto de subárboles de un árbol, con igual
  profundidad (en el nivel 0 solo está el árbol original, en el nivel 1
   sus hijos, etc)

                                   11   Nivel 0
  La altura del
  árbol (cuya raíz
  es el nodo 11),                           Nivel 1    La profundidad
                              6         9
  es 3                                                 del subárbol (en
                                                       el árbol de raíz
       Nivel 2       7            33          51       11), es 2


  Nivel 3    15          55                   13      23    38
Conceptos, definiciones y terminología básica
• El grado de un árbol es el número máximo de hijos que pueden
  tener sus subárboles
  – Árbol n-ario  árbol de grado n
  – Árbol binario  árbol de grado 2
  – Etc…

                                11


                           6           9



                 7             33          51


           15         55                   13      23     38

                                                Árbol de grado 3
Árboles Binarios
• Árbol binario:
  – Conjunto de elementos o nodos del mismo tipo, tal que:
    • o bien es el conjunto vacío, y entonces se llama árbol vacío
    • o bien es no vacío, en cuyo caso existe un elemento destacado
       llamado raíz, y el resto de los elementos se distribuyen en dos
       subconjuntos disjuntos, llamados subárbol izquierdo y
       subárbol derecho, cada uno de los cuales es un árbol binario

                              3


                         6                     9



               7             33           51


          15        55               13
Especificación de árboles binarios
espec árbolesBinarios
  usa booleanos,naturales
  parámetro formal
      género elemento
  fpf
género arbin

operaciones
  Δ: → arbin {árbol vacío}
  _<_,_>: elemento arbin arbin → arbin    {operación plantar}

  parcial raíz: arbin → elemento
  parcial subIzq, subDer: arbin → arbin
  vacío?: arbin → bool
  parcial altura: arbin → natural

dominios de definición iz,de:arbin; e:elemento
raíz(e<iz,de>) subIzq(e<iz,de>) subDer(e<iz,de>) altura(e<iz,de>)
....
Especificación de árboles binarios
….
ecuaciones iz,de:arbin; e:elemento
   raíz(e<iz,de>) = e
   subIzq(e<iz,de>) = iz
   subDer(e<iz,de>) = de
   vacío?(Δ) = verdad
   vacío?(e<iz,de>) = falso
   (vacío?(iz))(vacío?(de))  altura(e<iz,de>) = 0
   (vacío?(iz)) (¬vacío?(de)) 
                       altura(e<iz,de>) = suc(altura(de))
   (¬vacío?(iz)) (vacío?(de))  altura(e<iz,de>) = suc(altura(iz))
   (¬vacío?(iz)) (¬vacío?(de)) 
        altura(e<iz,de>) = suc(max(altura(iz),altura(de)))
fespec
Recorridos en árboles binarios
Un recorrido de un árbol consiste en visitar todos los
    elementos del árbol una sola vez
Recorridos en profundidad de árboles binarios:
• Recorrido en pre-orden:                      1   Raíz

    1. se visita la raíz
    2. se recorre en pre-orden el hijo izquierdo   2
                                                                       3
    3. se recorre en pre-orden el hijo derecho         Iz        De

•    Recorrido en post-orden:                               3
                                                                Raíz

    1. se recorre en post-orden el hijo izquierdo
    2. se recorre en post-orden el hijo derecho 1                      2
    3. se visita la raíz                               Iz        De

•    Recorrido en in-orden:                                 2
                                                                Raíz

    1. se recorre en in-orden el hijo izquierdo
    2. se visita la raíz                           1                   3
    3. se recorre en in-orden el hijo derecho          Iz        De
Recorridos en árboles binarios
                            3


                       6        9



              7            33        51


         15       55            13



• Ejercicio: Cuál será la secuencia de números que se
  obtendrá al recorrer el árbol utilizando:
  – Recorrido en pre-orden
  – Recorrido en post-orden
  – Recorrido en in-orden
Recorridos en árboles binarios
                                3


                       6                      9



              7            33            51


         15       55                13



• Ejercicio: Cuál será la secuencia de números que se
  obtendrá al recorrer el árbol utilizando:
  – Recorrido en pre-orden
  – Recorrido en post-orden
  – Recorrido en in-orden
Especificación recorridos en árboles
 binarios
 espec recorridosÁrbolesBinarios
   usa árbolesBinarios, listas {de elementos}
 operaciones
   preorden, inorden, postorden: arbin → lista
 ecuaciones iz,de:arbin; e:elemento
    preorden(Δ) = []
    preorden(e<iz,de>) = ( [e] & preorden(iz) ) & preorden(de)
    inorden(Δ) = []
    inorden(e<iz,de>) = ( inorden(iz) & [e] ) & inorden(de)
    postorden(Δ) = []
    postorden(e<iz,de>) = ( postorden(iz) & postorden(de) ) & [e]
 fespec

Recordatorio    &: concatenación de listas de elementos   []: lista vacía
Recorridos en árboles n-arios
Un recorrido de un árbol consiste en visitar todos los
    elementos del árbol una sola vez
Recorridos en profundidad de árboles n-arios: 1 Raíz

•    Recorrido en pre-orden:                            2          …           N+1
    1. se visita la raíz                                     A1    An

    2. se recorren en pre-orden todos los subárboles, de izquierda a
         derecha                                                  N+1   Raíz


                                                         1                     N
•    Recorrido en post-orden:                                A1    …     An
    1. se recorren en post-orden todos los subárboles, de izquierda a
         derecha
    2.   se visita la raíz
Recorrido en anchura
• El recorrido en anchura de un árbol consiste en visitar
  todos los elementos del árbol una sola vez, de la
  forma:
  – primero se visitan los elementos del nivel 0, luego los
    del nivel 1, y así sucesivamente,
  – En cada nivel, se visitan los elementos de izquierda a
    derecha                 11    Nivel 0


                          6        9   Nivel 1


                 7            33        51
      Nivel 2


            15       55                  13      23   38
 Nivel 3
Recorrido en anchura – Especificación
Algebraica para árboles binarios
espec recorridoAnchura
  usa árbolesBinarios, listas {de elementos}, naturales

Operaciones

   parcial nivel: arbin nat −> lista
   parcial nivelesSub: arbin nat −> lista
   anchura: arbin −> lista

dominios de definición a:arbin; i:nat
  nivel(a,i) y nivelesSub(a,i) sólo están definidos si 0≤i≤altura(a)
  {y por lo tanto, no están definidas para arbin vacío}

ecuaciones
…
Recorrido en anchura – Especificación
Algebraica para árboles binarios
ecuaciones e:elemento; i:nat; a,ai,ad:arbin
  {Ecuaciones para nivel:}
  nivel(plantar(e,ai,ad),0) = [e]
   ai=vacío  ad≠vacío  i>0  nivel(plantar(e,ai,ad),i) = nivel(ad,i-1)
   ai≠vacío  ad=vacío  i>0  nivel(plantar(e,ai,ad),i) = nivel(ai,i-1)

   ai≠vacío  ad≠vacío  altura(ai)≥i-1  altura(ad)<i-1  i>0 
        nivel(plantar(e,ai,ad),i) = nivel(ai,i-1)
   ai≠vacío  ad≠vacío  altura(ai)<i-1  altura(ad)≥i-1  i>0 
        nivel(plantar(e,ai,ad),i) = nivel(ad,i-1)
   ai≠vacío  ad≠vacío  altura(ai)≥i-1  altura(ad)≥i-1  i>0 
         nivel(plantar(e,ai,ad),i) = nivel(ai,i-1) & nivel(ad,i-1)
     { …AQUÍ van las ecuaciones para nivelesSub y anchura….}
fespec
Recorrido en anchura – Especificación
Algebraica para árboles binarios
ecuaciones e:elemento; i:nat; a,ai,ad:arbin
  ….
  { AQUÍ irán las ecuaciones para nivel…}
  …

   {Ecuaciones para nivelesSub y anchura:}
   i=altura(a) -> nivelesSub(a,i) = nivel(a,i)
   i<altura(a) -> nivelesSub(a,i) = nivel(a,i) & nivelesSub(a,i+1)

   anchura(vacío) = []
   anchura(plantar(e,ai,ad)) = nivelesSub(plantar(e,ai,ad),0)

fespec

Más contenido relacionado

La actualidad más candente

Arboles
ArbolesArboles
Arboles
espejoxiii
 
Árboles Binarios y Grafos
Árboles Binarios  y GrafosÁrboles Binarios  y Grafos
Árboles Binarios y Grafos
Noel E Jimenez
 
Unidad 6
Unidad 6Unidad 6
Unidad 6
Angeles Quezada
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no lineales
José Antonio Sandoval Acosta
 
Unidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOSUnidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOS
Anthony Can
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
knowallrpa
 
Arboles B y Arboles B+
Arboles B y Arboles B+Arboles B y Arboles B+
Arboles B y Arboles B+neltherdaza
 
Matemáticas discretas- Teoría de Grafos
Matemáticas discretas- Teoría de GrafosMatemáticas discretas- Teoría de Grafos
Matemáticas discretas- Teoría de Grafos
Angela Janeth Jimenez
 
Árboles Multicamino, B y B+
Árboles Multicamino, B y B+Árboles Multicamino, B y B+
Árboles Multicamino, B y B+
Alvaro Enrique Ruano
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discreta
Junior Soto
 
TEMA 1: MATRICES. OPERACIONES CON MATRICES
TEMA 1: MATRICES. OPERACIONES CON MATRICESTEMA 1: MATRICES. OPERACIONES CON MATRICES
TEMA 1: MATRICES. OPERACIONES CON MATRICESelisancar
 
Estructuras no-lineales
Estructuras no-linealesEstructuras no-lineales
Estructuras no-lineales
karlalopezbello
 
Estructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafosEstructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafos
Miguel Rodríguez
 
Grafos
GrafosGrafos
Grafos
drakul09
 

La actualidad más candente (20)

Arboles
ArbolesArboles
Arboles
 
Árboles Binarios y Grafos
Árboles Binarios  y GrafosÁrboles Binarios  y Grafos
Árboles Binarios y Grafos
 
Unidad 6
Unidad 6Unidad 6
Unidad 6
 
Teoria de grafos
Teoria de grafosTeoria de grafos
Teoria de grafos
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no lineales
 
Unidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOSUnidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOS
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Arboles B y Arboles B+
Arboles B y Arboles B+Arboles B y Arboles B+
Arboles B y Arboles B+
 
Matemáticas discretas- Teoría de Grafos
Matemáticas discretas- Teoría de GrafosMatemáticas discretas- Teoría de Grafos
Matemáticas discretas- Teoría de Grafos
 
Árboles Multicamino, B y B+
Árboles Multicamino, B y B+Árboles Multicamino, B y B+
Árboles Multicamino, B y B+
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discreta
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Grafo bipartito
Grafo bipartitoGrafo bipartito
Grafo bipartito
 
Arboles
ArbolesArboles
Arboles
 
TEMA 1: MATRICES. OPERACIONES CON MATRICES
TEMA 1: MATRICES. OPERACIONES CON MATRICESTEMA 1: MATRICES. OPERACIONES CON MATRICES
TEMA 1: MATRICES. OPERACIONES CON MATRICES
 
Estructuras no-lineales
Estructuras no-linealesEstructuras no-lineales
Estructuras no-lineales
 
Arboles b
Arboles bArboles b
Arboles b
 
Estructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafosEstructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafos
 
Grafos
GrafosGrafos
Grafos
 
Tema grafos
Tema grafosTema grafos
Tema grafos
 

Destacado

ejercicios de recorrido de grafos (arboles)
ejercicios de recorrido de grafos (arboles) ejercicios de recorrido de grafos (arboles)
ejercicios de recorrido de grafos (arboles)
brayan0015
 
Grafos - Figuras Planas
Grafos - Figuras PlanasGrafos - Figuras Planas
Grafos - Figuras Planasarteaga0122
 
Arboles 2014 final
Arboles 2014 finalArboles 2014 final
Arboles 2014 final
Jeiner Gonzalez Blanco
 
ESTRUCTURA DE DATOS (II Bimestre Abril Agosto 2011)
ESTRUCTURA DE DATOS (II Bimestre Abril Agosto 2011)ESTRUCTURA DE DATOS (II Bimestre Abril Agosto 2011)
ESTRUCTURA DE DATOS (II Bimestre Abril Agosto 2011)
Videoconferencias UTPL
 
6 la gerencia de proyectos clase 6
6 la gerencia de proyectos clase 66 la gerencia de proyectos clase 6
6 la gerencia de proyectos clase 6
Eduardo Machuca Delgado
 
Arboles y grafos
Arboles y grafosArboles y grafos
Arboles y grafos
Alexis Chavez
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binariosfavi_hola
 
El uso de la EDT en la Administración de Proyectos
El uso de la EDT en la Administración de ProyectosEl uso de la EDT en la Administración de Proyectos
El uso de la EDT en la Administración de Proyectos
fadminproyectos
 
Estructuras detallada de trabajo edt
Estructuras detallada de trabajo edtEstructuras detallada de trabajo edt
Estructuras detallada de trabajo edt
Alvaro Claros, PMP
 

Destacado (12)

Recorrido en árboles binarios
Recorrido en árboles binariosRecorrido en árboles binarios
Recorrido en árboles binarios
 
ejercicios de recorrido de grafos (arboles)
ejercicios de recorrido de grafos (arboles) ejercicios de recorrido de grafos (arboles)
ejercicios de recorrido de grafos (arboles)
 
Grafos - Figuras Planas
Grafos - Figuras PlanasGrafos - Figuras Planas
Grafos - Figuras Planas
 
Arboles 2014 final
Arboles 2014 finalArboles 2014 final
Arboles 2014 final
 
Arboles
ArbolesArboles
Arboles
 
ESTRUCTURA DE DATOS (II Bimestre Abril Agosto 2011)
ESTRUCTURA DE DATOS (II Bimestre Abril Agosto 2011)ESTRUCTURA DE DATOS (II Bimestre Abril Agosto 2011)
ESTRUCTURA DE DATOS (II Bimestre Abril Agosto 2011)
 
6 la gerencia de proyectos clase 6
6 la gerencia de proyectos clase 66 la gerencia de proyectos clase 6
6 la gerencia de proyectos clase 6
 
Tipos de sistemas distribuidos.
Tipos de sistemas distribuidos.Tipos de sistemas distribuidos.
Tipos de sistemas distribuidos.
 
Arboles y grafos
Arboles y grafosArboles y grafos
Arboles y grafos
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binarios
 
El uso de la EDT en la Administración de Proyectos
El uso de la EDT en la Administración de ProyectosEl uso de la EDT en la Administración de Proyectos
El uso de la EDT en la Administración de Proyectos
 
Estructuras detallada de trabajo edt
Estructuras detallada de trabajo edtEstructuras detallada de trabajo edt
Estructuras detallada de trabajo edt
 

Similar a Arboles v2

Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
nukeeHE
 
Arboles
ArbolesArboles
C11.1. árboles
C11.1. árbolesC11.1. árboles
C11.1. árboles
Carlos Miranda
 
ARBOLES-.pdf
ARBOLES-.pdfARBOLES-.pdf
ARBOLES-.pdf
BiancaPacheco25
 
Para leer estructuras
Para leer estructurasPara leer estructuras
Para leer estructurasVana Cigarroa
 
Para leer estructuras
Para leer estructurasPara leer estructuras
Para leer estructurasVana Cigarroa
 
Árboles binarios, ABB y AVL
Árboles binarios, ABB y AVLÁrboles binarios, ABB y AVL
Árboles binarios, ABB y AVL
Alvaro Enrique Ruano
 
Recorrido de grafos 1ra parte
Recorrido de grafos 1ra parteRecorrido de grafos 1ra parte
Recorrido de grafos 1ra parte
Sergio Ormeño
 
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
Eliezer Cordova
 
Estructuras No Lineales
Estructuras No LinealesEstructuras No Lineales
Estructuras No Linealesguest8555cd
 
Estructuras no lineales de la unidad 4
Estructuras no lineales de la unidad 4Estructuras no lineales de la unidad 4
Estructuras no lineales de la unidad 4
efrain_rap
 
Grafos 9.1 2016
Grafos 9.1 2016Grafos 9.1 2016
Grafos 9.1 2016
Esteban Andres Diaz Mina
 
Declarar Arboles. Operaciones. Ejemplospdf
Declarar Arboles. Operaciones. EjemplospdfDeclarar Arboles. Operaciones. Ejemplospdf
Declarar Arboles. Operaciones. Ejemplospdf
LENNYGALINDEZ
 
Grafos 9.1 2016
Grafos 9.1 2016Grafos 9.1 2016
Grafos 9.1 2016
Esteban Andres Diaz Mina
 

Similar a Arboles v2 (20)

ARBOLES BINARIOS
ARBOLES BINARIOSARBOLES BINARIOS
ARBOLES BINARIOS
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Arboles
ArbolesArboles
Arboles
 
C11.1. árboles
C11.1. árbolesC11.1. árboles
C11.1. árboles
 
ARBOLES-.pdf
ARBOLES-.pdfARBOLES-.pdf
ARBOLES-.pdf
 
Arboles
ArbolesArboles
Arboles
 
áRboles binarios
áRboles binariosáRboles binarios
áRboles binarios
 
áRboles binarios
áRboles binariosáRboles binarios
áRboles binarios
 
Para leer estructuras
Para leer estructurasPara leer estructuras
Para leer estructuras
 
Para leer estructuras
Para leer estructurasPara leer estructuras
Para leer estructuras
 
Árboles binarios, ABB y AVL
Árboles binarios, ABB y AVLÁrboles binarios, ABB y AVL
Árboles binarios, ABB y AVL
 
Recorrido de grafos 1ra parte
Recorrido de grafos 1ra parteRecorrido de grafos 1ra parte
Recorrido de grafos 1ra parte
 
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
ArbolesArboles
Arboles
 
Estructuras No Lineales
Estructuras No LinealesEstructuras No Lineales
Estructuras No Lineales
 
Estructuras no lineales de la unidad 4
Estructuras no lineales de la unidad 4Estructuras no lineales de la unidad 4
Estructuras no lineales de la unidad 4
 
Arboles
ArbolesArboles
Arboles
 
Grafos 9.1 2016
Grafos 9.1 2016Grafos 9.1 2016
Grafos 9.1 2016
 
Declarar Arboles. Operaciones. Ejemplospdf
Declarar Arboles. Operaciones. EjemplospdfDeclarar Arboles. Operaciones. Ejemplospdf
Declarar Arboles. Operaciones. Ejemplospdf
 
Grafos 9.1 2016
Grafos 9.1 2016Grafos 9.1 2016
Grafos 9.1 2016
 

Arboles v2

  • 2. Bibliografía • Tema III (lecciones 15 a 22) del libro “Campos Laclaustra, J.: Estructuras de Datos y Algoritmos, Prensas Universitarias de Zaragoza, Colección Textos Docentes, 1995 “ • Capitulo 5 del libro “X. Franch: Estructuras de datos. Especificación, diseño e implementación, 3ª edición, Ediciones UPC, 2001” • Libro: “Joyanes, L., Zahonero, I., Fernández, M. y Sánchez, L.: Estructuras de datos. Libro de problemas, McGraw Hill, 1999.”, capítulos 8, 9 y 10 • Capítulos 6 a 8, y 11 a 15 del libro “Martí, Ortega, Verdejo: Estructura de datos y métodos algorítmicos. Ejercicios y problemas resueltos, Pearson Prentice Hall, 2003.”, • Y muchos otros....
  • 3. Árboles: concepto y especificación algebraica (Lección 15…)
  • 4. Conceptos, definiciones y terminología básica • Árbol: – Conjunto de elementos de un mismo tipo, denominados nodos, que pueden representarse en un grafo no orientado, conexo y acíclico, en el que existe un vértice destacado denominado raíz • Por lo general es una estructura jerárquica… – Definición recursiva: • Un árbol n-ario (con n1) es un conjunto no vacío de elementos del mismo tipo tal que: – Existe un elemento destacado llamado raíz del árbol – el resto de los elementos se distribuyen en m subconjuntos disjuntos (0 m n ), llamados subárboles del árbol original, cada uno de los cuales es a su vez un árbol n-ario
  • 5. Conceptos, definiciones y terminología básica • Árbol ordenado: – Si en el conjunto de subárboles de un árbol n-ario se supone definida una relación de orden total, el árbol se denomina ordenado Árbol ordenado con raíz X y subárboles A1 … Am Árbol 3-ario de números enteros Leyenda: Nodo Árbol
  • 6. Conceptos, definiciones y terminología básica • Hoja: – Un árbol compuesto por un solo elemento se denomina hoja Raíz 3 Nodo Árbol 6 9 7 33 51 Hoja Hoja 15 55 Hoja 13 23 38 Hoja Hoja Hoja Ejemplo de árbol 3-ario
  • 7. Conceptos, definiciones y terminología básica • Camino: un camino es una secuencia de árboles A1,..As, s1, tal que Ai+1 es subárbol de Ai, para todo 1is-1 • Longitud de camino: número de árboles en la secuencia del camino, menos 1 • Por convenio: diremos que existe un camino de longitud 0, de todo subárbol a si mismo 3 Camino desde el árbol de raíz el nodo 3, 6 9 hasta el árbol Camino desde cuya raíz es el el nodo 9 nodo 55, y su hasta el 23, de longitud es 3 7 33 51 longitud 2 15 55 13 23 38
  • 8. Conceptos, definiciones y terminología básica • Si en un árbol A existe un camino desde el subárbol A1 hasta el subárbol A2, se dice que A1 es antecesor de A2 y que A2 es descendiente de A1 Antecesores del árbol Antecesor del árbol cuya raíz es el nodo cuya raíz es el nodo 7, son los subárboles 6, es el árbol cuya que tienen como raíz es el nodo 3 raíces: el nodo 6, y el 3 Descendientes del del nodo 3, y sus árbol cuya raíz es el descendientes son nodo 6 son todos los los subárboles que 6 9 subárboles que tienen como raíces el “cuelgan” de el. nodo 15, y el del 55 7 33 51 15 55 13 23 38
  • 9. Conceptos, definiciones y terminología básica • Los antecesores o descendientes de un subárbol, distintos del mismo subárbol, se denominan propios • El padre de un subárbol, es su primer antecesor propio, si existe • Los hijos de un subárbol, son sus primeros descendientes propios, si existen • Dos subárboles son hermanos, si tienen el mismo padre 3 Su padre es Sus hijos son 6 9 7 33 51 15 55 13 23 38 Sus hermanos son
  • 10. Conceptos, definiciones y terminología básica • La altura de un árbol es la longitud del camino más largo que puede encontrarse en el árbol • La profundidad de un subárbol en un árbol, es la longitud del único camino existente desde el árbol hasta el subárbol • Un nivel, es el conjunto de subárboles de un árbol, con igual profundidad (en el nivel 0 solo está el árbol original, en el nivel 1 sus hijos, etc) 11 Nivel 0 La altura del árbol (cuya raíz es el nodo 11), Nivel 1 La profundidad 6 9 es 3 del subárbol (en el árbol de raíz Nivel 2 7 33 51 11), es 2 Nivel 3 15 55 13 23 38
  • 11. Conceptos, definiciones y terminología básica • El grado de un árbol es el número máximo de hijos que pueden tener sus subárboles – Árbol n-ario  árbol de grado n – Árbol binario  árbol de grado 2 – Etc… 11 6 9 7 33 51 15 55 13 23 38 Árbol de grado 3
  • 12. Árboles Binarios • Árbol binario: – Conjunto de elementos o nodos del mismo tipo, tal que: • o bien es el conjunto vacío, y entonces se llama árbol vacío • o bien es no vacío, en cuyo caso existe un elemento destacado llamado raíz, y el resto de los elementos se distribuyen en dos subconjuntos disjuntos, llamados subárbol izquierdo y subárbol derecho, cada uno de los cuales es un árbol binario 3 6 9 7 33 51 15 55 13
  • 13. Especificación de árboles binarios espec árbolesBinarios usa booleanos,naturales parámetro formal género elemento fpf género arbin operaciones Δ: → arbin {árbol vacío} _<_,_>: elemento arbin arbin → arbin {operación plantar} parcial raíz: arbin → elemento parcial subIzq, subDer: arbin → arbin vacío?: arbin → bool parcial altura: arbin → natural dominios de definición iz,de:arbin; e:elemento raíz(e<iz,de>) subIzq(e<iz,de>) subDer(e<iz,de>) altura(e<iz,de>) ....
  • 14. Especificación de árboles binarios …. ecuaciones iz,de:arbin; e:elemento raíz(e<iz,de>) = e subIzq(e<iz,de>) = iz subDer(e<iz,de>) = de vacío?(Δ) = verdad vacío?(e<iz,de>) = falso (vacío?(iz))(vacío?(de))  altura(e<iz,de>) = 0 (vacío?(iz)) (¬vacío?(de))  altura(e<iz,de>) = suc(altura(de)) (¬vacío?(iz)) (vacío?(de))  altura(e<iz,de>) = suc(altura(iz)) (¬vacío?(iz)) (¬vacío?(de))  altura(e<iz,de>) = suc(max(altura(iz),altura(de))) fespec
  • 15. Recorridos en árboles binarios Un recorrido de un árbol consiste en visitar todos los elementos del árbol una sola vez Recorridos en profundidad de árboles binarios: • Recorrido en pre-orden: 1 Raíz 1. se visita la raíz 2. se recorre en pre-orden el hijo izquierdo 2 3 3. se recorre en pre-orden el hijo derecho Iz De • Recorrido en post-orden: 3 Raíz 1. se recorre en post-orden el hijo izquierdo 2. se recorre en post-orden el hijo derecho 1 2 3. se visita la raíz Iz De • Recorrido en in-orden: 2 Raíz 1. se recorre en in-orden el hijo izquierdo 2. se visita la raíz 1 3 3. se recorre en in-orden el hijo derecho Iz De
  • 16. Recorridos en árboles binarios 3 6 9 7 33 51 15 55 13 • Ejercicio: Cuál será la secuencia de números que se obtendrá al recorrer el árbol utilizando: – Recorrido en pre-orden – Recorrido en post-orden – Recorrido en in-orden
  • 17. Recorridos en árboles binarios 3 6 9 7 33 51 15 55 13 • Ejercicio: Cuál será la secuencia de números que se obtendrá al recorrer el árbol utilizando: – Recorrido en pre-orden – Recorrido en post-orden – Recorrido en in-orden
  • 18. Especificación recorridos en árboles binarios espec recorridosÁrbolesBinarios usa árbolesBinarios, listas {de elementos} operaciones preorden, inorden, postorden: arbin → lista ecuaciones iz,de:arbin; e:elemento preorden(Δ) = [] preorden(e<iz,de>) = ( [e] & preorden(iz) ) & preorden(de) inorden(Δ) = [] inorden(e<iz,de>) = ( inorden(iz) & [e] ) & inorden(de) postorden(Δ) = [] postorden(e<iz,de>) = ( postorden(iz) & postorden(de) ) & [e] fespec Recordatorio  &: concatenación de listas de elementos []: lista vacía
  • 19. Recorridos en árboles n-arios Un recorrido de un árbol consiste en visitar todos los elementos del árbol una sola vez Recorridos en profundidad de árboles n-arios: 1 Raíz • Recorrido en pre-orden: 2 … N+1 1. se visita la raíz A1 An 2. se recorren en pre-orden todos los subárboles, de izquierda a derecha N+1 Raíz 1 N • Recorrido en post-orden: A1 … An 1. se recorren en post-orden todos los subárboles, de izquierda a derecha 2. se visita la raíz
  • 20. Recorrido en anchura • El recorrido en anchura de un árbol consiste en visitar todos los elementos del árbol una sola vez, de la forma: – primero se visitan los elementos del nivel 0, luego los del nivel 1, y así sucesivamente, – En cada nivel, se visitan los elementos de izquierda a derecha 11 Nivel 0 6 9 Nivel 1 7 33 51 Nivel 2 15 55 13 23 38 Nivel 3
  • 21. Recorrido en anchura – Especificación Algebraica para árboles binarios espec recorridoAnchura usa árbolesBinarios, listas {de elementos}, naturales Operaciones parcial nivel: arbin nat −> lista parcial nivelesSub: arbin nat −> lista anchura: arbin −> lista dominios de definición a:arbin; i:nat nivel(a,i) y nivelesSub(a,i) sólo están definidos si 0≤i≤altura(a) {y por lo tanto, no están definidas para arbin vacío} ecuaciones …
  • 22. Recorrido en anchura – Especificación Algebraica para árboles binarios ecuaciones e:elemento; i:nat; a,ai,ad:arbin {Ecuaciones para nivel:} nivel(plantar(e,ai,ad),0) = [e] ai=vacío  ad≠vacío  i>0  nivel(plantar(e,ai,ad),i) = nivel(ad,i-1) ai≠vacío  ad=vacío  i>0  nivel(plantar(e,ai,ad),i) = nivel(ai,i-1) ai≠vacío  ad≠vacío  altura(ai)≥i-1  altura(ad)<i-1  i>0  nivel(plantar(e,ai,ad),i) = nivel(ai,i-1) ai≠vacío  ad≠vacío  altura(ai)<i-1  altura(ad)≥i-1  i>0  nivel(plantar(e,ai,ad),i) = nivel(ad,i-1) ai≠vacío  ad≠vacío  altura(ai)≥i-1  altura(ad)≥i-1  i>0  nivel(plantar(e,ai,ad),i) = nivel(ai,i-1) & nivel(ad,i-1) { …AQUÍ van las ecuaciones para nivelesSub y anchura….} fespec
  • 23. Recorrido en anchura – Especificación Algebraica para árboles binarios ecuaciones e:elemento; i:nat; a,ai,ad:arbin …. { AQUÍ irán las ecuaciones para nivel…} … {Ecuaciones para nivelesSub y anchura:} i=altura(a) -> nivelesSub(a,i) = nivel(a,i) i<altura(a) -> nivelesSub(a,i) = nivel(a,i) & nivelesSub(a,i+1) anchura(vacío) = [] anchura(plantar(e,ai,ad)) = nivelesSub(plantar(e,ai,ad),0) fespec