SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
Á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

Grafos bipartitos y subgrafos
Grafos bipartitos y subgrafosGrafos bipartitos y subgrafos
Grafos bipartitos y subgrafosAsdrúbal Suárez
 
ED Unidad 4: Estructuras de datos no lineales (árboles)
ED Unidad 4: Estructuras de datos no lineales (árboles)ED Unidad 4: Estructuras de datos no lineales (árboles)
ED Unidad 4: Estructuras de datos no lineales (árboles)Franklin Parrales Bravo
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacionLuis Igoodbad
 
Transformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logicoTransformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logicojosecuartas
 
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
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasHuascar Génere
 
Estructura de datos presentacion y sesion 1
Estructura de datos presentacion y sesion 1Estructura de datos presentacion y sesion 1
Estructura de datos presentacion y sesion 1Jesús Gómez Ávila
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Juan Astudillo
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencialeidy2220
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binariosfavi_hola
 

La actualidad más candente (20)

Grafos bipartitos y subgrafos
Grafos bipartitos y subgrafosGrafos bipartitos y subgrafos
Grafos bipartitos y subgrafos
 
Arboles y grafos
Arboles y grafosArboles y grafos
Arboles y grafos
 
Estructuras no-lineales
Estructuras no-linealesEstructuras no-lineales
Estructuras no-lineales
 
Árboles binarios, ABB y AVL
Árboles binarios, ABB y AVLÁrboles binarios, ABB y AVL
Árboles binarios, ABB y AVL
 
Arboles
ArbolesArboles
Arboles
 
ED Unidad 4: Estructuras de datos no lineales (árboles)
ED Unidad 4: Estructuras de datos no lineales (árboles)ED Unidad 4: Estructuras de datos no lineales (árboles)
ED Unidad 4: Estructuras de datos no lineales (árboles)
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacion
 
Transformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logicoTransformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logico
 
Arboles multicamino
Arboles  multicaminoArboles  multicamino
Arboles multicamino
 
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
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 
Arboles y grafos
Arboles y grafosArboles y grafos
Arboles y grafos
 
Estructura de datos presentacion y sesion 1
Estructura de datos presentacion y sesion 1Estructura de datos presentacion y sesion 1
Estructura de datos presentacion y sesion 1
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
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
 
Arboles
ArbolesArboles
Arboles
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencia
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binarios
 
Teoria de grafos
Teoria de grafosTeoria de grafos
Teoria de 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
 
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
 
Unidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOSUnidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOSAnthony Can
 
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 Proyectosfadminproyectos
 
Estructuras detallada de trabajo edt
Estructuras detallada de trabajo edtEstructuras detallada de trabajo edt
Estructuras detallada de trabajo edtAlvaro Claros, PMP
 
Arboles B y Arboles B+
Arboles B y Arboles B+Arboles B y Arboles B+
Arboles B y Arboles B+neltherdaza
 

Destacado (13)

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)
 
Arboles con raiz
Arboles con raizArboles con raiz
Arboles con raiz
 
Grafos - Figuras Planas
Grafos - Figuras PlanasGrafos - Figuras Planas
Grafos - Figuras Planas
 
Arboles 2014 final
Arboles 2014 finalArboles 2014 final
Arboles 2014 final
 
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)
 
Grafo bipartito
Grafo bipartitoGrafo bipartito
Grafo bipartito
 
Unidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOSUnidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOS
 
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.
 
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
 
Arboles B y Arboles B+
Arboles B y Arboles B+Arboles B y Arboles B+
Arboles B y Arboles B+
 

Similar a Árboles y algoritmos binarios

Similar a Árboles y algoritmos binarios (20)

ARBOLES BINARIOS
ARBOLES BINARIOSARBOLES BINARIOS
ARBOLES BINARIOS
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Arboles
ArbolesArboles
Arboles
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discreta
 
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 y Grafos
Árboles Binarios  y GrafosÁrboles Binarios  y Grafos
Árboles Binarios y Grafos
 
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
 
Diapositiva de prueba
Diapositiva de pruebaDiapositiva de prueba
Diapositiva de prueba
 
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
 

Árboles y algoritmos binarios

  • 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