SlideShare una empresa de Scribd logo
1 de 42
Árboles
Ejemplos de estructuras arborescentes
 Arborescente -con forma de árbol
Ejemplos de estructuras arborescentes
 Regla de Alcance: las variables visibles en un
procedimiento son aquellos declarados en él mismo
o en cualquier ancestro de él (cualquier
procedimiento que se encuentre en el camino
[único] desde él hasta el origen del árbol (=la
raíz)).
Ejemplos de estructuras arborescentes
Ejemplos de estructuras arborescentes
 Normalmente se escriben en forma lineal:
 Pero para entender cómo son evaluadas se construye
(implícitamente) un árbol:
 las reglas de precedencia aseguran la existencia de un
único árbol para cada expresión en forma lineal;
 la forma de árbol representa directamente la estructura de
la fórmula; pero es difícil de escribir (con la tecnología
más comúnmente usada). La forma lineal es más fácil de
escribir, pero más difícil de entender
 forma lineal = sintaxis concreta
forma de árbol = sintaxis abstracta






−×+
z
yx
2
)3(
Abstracción de la Noción de Árbol
 Tratamos de definir:
árbol de elementos de tipoárbol de elementos de tipo AA
 Un árbol de (elementos de tipo) A es:
 o bien vacío
 o bien consta de:
 un elemento de tipo A
 más un número de árboles de elementos de
tipo A
Ejemplo de árbol no vacío
Abstracción de la Noción de Árbol
(continuación)
 los elementos se llaman
habitualmente NODOS del árbol
 los árboles también pueden definirse
como grafos con ciertas propiedades
especiales. (CUALES?)
Árboles n-arios y finitarios
 árbol n-ario: si no es vacío, tiene
exactamente n subárboles n-arios
 árbol finitario: si no es vacío, tiene
una cantidad finita de subárboles
finitarios.
 Pero: Todo árbol finitario puede
representarse como un árbol binario,
según un método a ver más adelante.
Árboles n-arios y finitarios (ejemplos)
 los árboles binarios son 2-arios
(obvio)

 obviamente los árboles n-arios son
todos finitarios
Árboles Binarios - Definición Inductiva
 Definimos a AB (Árbol Binario de tipo ):α
Árboles Binarios - Definición Inductiva
 En la notación gráfica (bidimensional)
podríamos definir:
Funciones (recurrentes) sobre
árboles binarios
 Recurrencia primitiva:
 f : - AB  X
 f (()) = xo
 f ((izq, a, der)) = c (a, f(izq), f(der) )
 Recurrencia (más) general:
 En los casos con llamadas recurrentes:
f(t) = c ( f(t1), . . . , f (tn) )
 alcanza que cada ti sea más chico que t (por
ejemplo: en cantidad total de nodos).
α
Ejemplos
 Tamaño:
 Cant(t:AB)  Naturales (cantidad de nodos del
árbol)
 Cant( [] ) = 0
 Cant([izq,a,der]) = 1 + Cant(izq) + Cant(der),
donde a es el tipo e izq y der son árboles AB.
 Prof (t:AB)  Naturales (profundidad - niveles
del árbol)
 Prof ([]) = 0
 Prof([izq, a, der]) = 1 + max( Prof(izq), Prof
(der) )
 Máximo de un árbol binario de naturales
 Max: Naturales AB  Naturales
(precondición: el argumento debe ser un
árbol no vacío)
 Max ( [], n, [] ) = n
 Max ( [], n, der) = max (n, Max (der))
 Max ( izq, n, [] ) = max (n, Max (izq) )
 Max (izq, n, der) = max3 (n, Max (izq), Max
(der) )
 (en las tres últimas ecuaciones suponemos
izq y der no vacíos).
Ejemplos
Recorridas de árboles binarios:
 En general, son procedimientos que visitan todos
los nodos de un árbol binario efectuando cierta
acción sobre cada uno de ellos.
 La forma de estos procedimientos depende del
orden que se elija para visitar los nodos.
 Obviamente, recorrer un árbol vacío es trivial. Para
recorrer un árbol no vacío hay tres órdenes
naturales, según si la raíz sea visitada antes
que los subárboles, entre las recorridas de
los subárboles o después de recorrer los
subárboles.
Tipos de Recorrida de Árboles
Primer orden:
Pre orden
se visita la raíz;
se recorre el subárbol izquierdo;
se recorre el subárbol derecho;
Segundo orden:
Recorrida en-orden
Orden simétrico
se recorre el subárbol izquierdo;
se visita la raíz;
se recorre el subárbol derecho;
Tercer orden:
Post-orden
se recorre el subárbol izquierdo;
se recorre el subárbol derecho;
se visita la raíz;
Árboles Binarios Ordenados (de búsqueda)
 Consideremos árboles binarios de naturales
(más generalmente, de cualquier tipo sobre
el cual pueda definirse un orden lineal).
 Un árbol binario de naturales está ordenado
si cada nodo es mayor que todo nodo de
su subárbol izquierdo y menor que todo
nodo de su subárbol derecho.
Árboles Binarios Ordenados (de búsqueda)
 Definición inductiva:
un árbol binario ordenado (de naturales) es:
 o bien vacío
 o bien consta de un natural n y dos árboles binarios
ordenados: izq y der, tales que todo elemento de izq es
menor que n y todo elemento de der es mayor que n.
 (En esta definición no consideramos elementos
repetidos - La generalización a este caso es obvia).
 Recordar búsqueda binaria en vectores ordenados,
por bipartición.
Árboles Binarios de búsqueda- Propiedades
 Los árboles binarios de búsqueda
representan directamente la
estructura de la búsqueda binaria:
 esMiembro: Nat x Nat AB  Bool
 esMiembro (n, [] ) = false
 esMiembro (n, (izq, m, der) ) =
case
n < m  esMiembro (n, izq)
n = m  true
n > m  es Miembro (n, der)
end
Árboles Binarios de búsqueda- Propiedades
 Otra propiedad interesante de los árboles
binarios ordenados es:
 su linealización en (segundo) orden es una
lista ordenada
 lo cual da una idea para un algoritmo de
ordenamiento de listas:
 dada la lista a ser ordenada, formar con sus
elementos un árbol binario ordenado.
 luego, listar este árbol en orden.
(TreeSort)
 Para resolver el primero de estos dos pasos,
debe escribirse un algoritmo de inserción de
un elemento en un árbol binario ordenado, de
modo que el orden sea respetado.
Representación de Árboles Binarios en C
 Caben las mismas consideraciones
que para las listas:
 hay árboles de tamaño arbitrario
 interesa representarlos como estructuras
dinámicas
 Por ello, la representación natural es con
punteros
Representación de Árboles Binarios en C
 Definimos entonces:
typedef struct nodoIntAB{
int elem;
nodoIntAB *izq,*der;
}*intAB;
Representación de Árboles Binarios en C
 Veamos ahora la función profundidad
en C:
int profAB(intAB arbol){
if(arbol == NULL)
return 0;
else
return (1 + max(profAB(arbol->izq),
profAB(arbol->der)));
}
Procedimiento de recorrida de un
árbol binario en orden
 Se aplica a cada nodo un
procedimiento P que suponemos dado
 Por ejemplo P podría ser: desplegar el
elemento contenido en cada nodo
void intABRecorridaP(intAB arbol){
if ( arbol == NULL)
<<acción final>>
else{
intABRecorridaP (arbol->izq);
P(arbol->elem);
intABRecorridaP (arbol->der);
}
}
Procedimiento de recorrida de un
árbol binario en orden
 Suponemos aquí que P actúa
solamente sobre los elementos
(información en los nodos) y no sobre
los punteros (estructura del árbol).
 Dejamos abierta la posibilidad de una
<<acción final>>, a realizar para
cada subárbol vacío.
¿Cómo se escriben algoritmos
iterativos sobre árboles?
 recordemos las ideas de los
algoritmos que recorren estructuras
lineales (vectores, listas):
 Vectores:
 Listas:
¿Cómo se escriben algoritmos
iterativos sobre árboles?
 ¿Qué pasa en el caso de los árboles
binarios?
 Debemos utilizar un puntero p para
indicar el siguiente nodo a visitar.
 Dado que estamos considerando la
recorrida en pre-orden, entonces
aplicaremos la acción que nos interese al
nodo corriente y luego continuaremos la
recorrida, primero por el subárbol
izquierdo y luego por el derecho.
¿Cómo se escriben algoritmos
iterativos sobre árboles?
 Por lo tanto, al continuar hacia el
subárbol izquierdo, dejamos
pendiente la recorrida del subárbol
derecho.
 La situación al mover el puntero p es
como sigue:
¿Cómo se escriben algoritmos
iterativos sobre árboles?
 Veamos el árbol representado con punteros, de
acuerdo a las definiciones dadas antes:
 ¡¡¡ Y NO HAY MANERA DE VOLVER A ÉL DESDE
DONDE ESTAMOS !!!
¿Cómo se escriben algoritmos
iterativos sobre árboles?
 Conclusión: hay que guardar en
alguna estructura de datos los
punteros a los subárboles que van
quedando "pendientes".
 ¿Cuál es la estructura de datos que
necesitamos?
¿Cómo se escriben algoritmos
iterativos sobre árboles?
 Consideremos un caso más simple:
¿Cómo se escriben algoritmos
iterativos sobre árboles?
 Al avanzar p aparecerá otro subárbol
pendiente:
¿Cómo se escriben algoritmos
iterativos sobre árboles?
 De hecho tenemos que recordar todos los
sucesivos subárboles derechos que van
apareciendo durante la recorrida.
 Cada nuevo subárbol derecho que aparece
debe ser recorrido antes que los
aparecidos anteriormente (*)
 Por lo tanto, podemos apilar los punteros
de los subárboles pendientes.
¿Cómo se escriben algoritmos
iterativos sobre árboles?
 Dicho de otra forma: estructuramos
los punteros a subárboles pendientes
en una pila.
 El tope será el primer subárbol
pendiente a recorrer. Debido a la
observación marcada con (*) arriba,
cada nuevo subárbol derecho que
aparezca deberá ser colocado como
nuevo tope de la pila.
¿Cómo se escriben algoritmos
iterativos sobre árboles?
 Conclusión: la estructura de datos a
ser utilizada para recorrer un árbol
binario es como sigue:
¿Cómo se escriben algoritmos
iterativos sobre árboles?
 Con esta idea puede completarse la
versión iterativa del algoritmo de recorrida
en pre-orden. (Ejercicio).
 Se concluye que, en general, la
programación iterativa de algoritmos en
árboles es MUCHO más compleja que la
recurrente.
 Dado que los programas iterativos son en
general más eficientes, se hace interesante
estudiar métodos de transformación de
algoritmos recurrentes en iterativos
equivalentes.
¿Cómo se escriben algoritmos
iterativos sobre árboles?
 Si estos métodos pudieran ser
automatizados, entonces podrían ser
aplicados directamente por un
compilador.
 En tal caso, podríamos construir
programas simples (recurrentes) sin
tener que preocuparnos por la
pérdida de eficiencia.
Inserción en un árbol binario
ordenado:
void indABInsertar(int x, intAB &arbol){
//Precondición: t está ordenado
//Postcond: x es insertado en árbol, manteniendo el orden.
If (arbol == NULL){
arbol = new (intAB);
arbol->elem = x;
arbol->izq = NULL; arbol->der = NULL;
}
else if ( x < arbol->elem)
indABInsertar(x, arbol-> izq);
else // x >= arbol->elem
indABInsertar(x, arbol->der);
}
Inserción en un árbol binario
ordenado:
 Notar que se inserta siempre una
nueva hoja:
insertar 5 resulta en
Representación de Árboles
Finitarios como Binarios
 Dado un árbol finitario:
 puede representarse la misma información
en un árbol binario.
 La regla de la transformación es:
cada nodo apunta por izquierda a su
primer hijo, los hermanos se encadenan por
derecha.
Representación de Árboles
Finitarios como Binarios

Más contenido relacionado

La actualidad más candente

Arboles
ArbolesArboles
ArbolesUTCH
 
arboles avl con codigo en java
arboles avl con codigo en javaarboles avl con codigo en java
arboles avl con codigo en javamarhoz
 
Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosAngel Vázquez Patiño
 
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
 
Programacion estructura de arboles en c
Programacion estructura de arboles en cProgramacion estructura de arboles en c
Programacion estructura de arboles en cJessica Suarez
 
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
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binariosdaniel9026
 
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
 
Estructuras No Lineales
Estructuras No LinealesEstructuras No Lineales
Estructuras No Linealesguest8555cd
 

La actualidad más candente (20)

Arboles
ArbolesArboles
Arboles
 
Arboles Binarios y Arboles Binarios de Busqueda
Arboles Binarios y Arboles Binarios de BusquedaArboles Binarios y Arboles Binarios de Busqueda
Arboles Binarios y Arboles Binarios de Busqueda
 
áRboles binarios
áRboles binariosáRboles binarios
áRboles binarios
 
ARBOLES BINARIOS
ARBOLES BINARIOSARBOLES BINARIOS
ARBOLES BINARIOS
 
arboles avl con codigo en java
arboles avl con codigo en javaarboles avl con codigo en java
arboles avl con codigo en java
 
Arboles
Arboles Arboles
Arboles
 
Arboles Ordenados
Arboles OrdenadosArboles Ordenados
Arboles Ordenados
 
Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenados
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binarios
 
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)
 
Programacion estructura de arboles en c
Programacion estructura de arboles en cProgramacion estructura de arboles en c
Programacion estructura de arboles en c
 
Arboles Binarios
Arboles BinariosArboles Binarios
Arboles Binarios
 
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
 
C11.1. árboles
C11.1. árbolesC11.1. árboles
C11.1. árboles
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binarios
 
Estructura de Datos - Estructuras no lineales
Estructura de Datos - Estructuras no linealesEstructura de Datos - Estructuras no lineales
Estructura de Datos - Estructuras no lineales
 
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
 
Estructuras No Lineales
Estructuras No LinealesEstructuras No Lineales
Estructuras No Lineales
 
Arboles
ArbolesArboles
Arboles
 

Similar a Estructuras arborescentes y algoritmos sobre árboles binarios

Similar a Estructuras arborescentes y algoritmos sobre árboles binarios (20)

Sustentacion arboles
Sustentacion arbolesSustentacion arboles
Sustentacion arboles
 
Unidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOSUnidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOS
 
Unidad v arboles
Unidad v arbolesUnidad v arboles
Unidad v arboles
 
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
 
Para leer estructuras
Para leer estructurasPara leer estructuras
Para leer estructuras
 
Para leer estructuras
Para leer estructurasPara leer estructuras
Para leer estructuras
 
Algoritmo por seleccion
Algoritmo por seleccionAlgoritmo por seleccion
Algoritmo por seleccion
 
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
 
Árboles binarios
Árboles binariosÁrboles binarios
Árboles binarios
 
ARBOLES
ARBOLESARBOLES
ARBOLES
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discreta
 
Arboles
Arboles Arboles
Arboles
 
Arboles presentacion
Arboles presentacionArboles presentacion
Arboles presentacion
 
UNIDAD II
UNIDAD IIUNIDAD II
UNIDAD II
 
Declarar Arboles. Operaciones. Ejemplospdf
Declarar Arboles. Operaciones. EjemplospdfDeclarar Arboles. Operaciones. Ejemplospdf
Declarar Arboles. Operaciones. Ejemplospdf
 
Unidad _ II
Unidad _ IIUnidad _ II
Unidad _ II
 
Funcion recursiva
Funcion recursivaFuncion recursiva
Funcion recursiva
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binarios
 

Más de Eliezer Cordova

Más de Eliezer Cordova (20)

Tipos de comunicacion
Tipos de comunicacionTipos de comunicacion
Tipos de comunicacion
 
Presentacion 3
Presentacion 3Presentacion 3
Presentacion 3
 
Presentacion 2
Presentacion 2Presentacion 2
Presentacion 2
 
Presentacion 2
Presentacion 2Presentacion 2
Presentacion 2
 
Presentacion 1
Presentacion 1Presentacion 1
Presentacion 1
 
Introduccion publisher
Introduccion publisherIntroduccion publisher
Introduccion publisher
 
Presentaciones efectivas
Presentaciones efectivasPresentaciones efectivas
Presentaciones efectivas
 
Resolucion de problemas
Resolucion de problemasResolucion de problemas
Resolucion de problemas
 
Programación
ProgramaciónProgramación
Programación
 
Presentacion aula virtual videoconferencia
Presentacion aula virtual videoconferenciaPresentacion aula virtual videoconferencia
Presentacion aula virtual videoconferencia
 
Metodología para la creación de algoritmos 0
Metodología para la creación de algoritmos 0Metodología para la creación de algoritmos 0
Metodología para la creación de algoritmos 0
 
Lenguajes de programación.ppt
Lenguajes de programación.pptLenguajes de programación.ppt
Lenguajes de programación.ppt
 
Presentacion uno
Presentacion unoPresentacion uno
Presentacion uno
 
Intro
IntroIntro
Intro
 
Acciones funciones
Acciones funcionesAcciones funciones
Acciones funciones
 
3 funciones
3 funciones3 funciones
3 funciones
 
2 estructura programa-c
2 estructura programa-c2 estructura programa-c
2 estructura programa-c
 
1 estructura programa-c
1 estructura programa-c1 estructura programa-c
1 estructura programa-c
 
Introduccion ia
Introduccion iaIntroduccion ia
Introduccion ia
 
Inteligencia artificial
Inteligencia artificialInteligencia artificial
Inteligencia artificial
 

Último

EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docxAleParedes11
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 

Último (20)

Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 

Estructuras arborescentes y algoritmos sobre árboles binarios

  • 2. Ejemplos de estructuras arborescentes  Arborescente -con forma de árbol
  • 3. Ejemplos de estructuras arborescentes  Regla de Alcance: las variables visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier procedimiento que se encuentre en el camino [único] desde él hasta el origen del árbol (=la raíz)).
  • 4. Ejemplos de estructuras arborescentes
  • 5. Ejemplos de estructuras arborescentes  Normalmente se escriben en forma lineal:  Pero para entender cómo son evaluadas se construye (implícitamente) un árbol:  las reglas de precedencia aseguran la existencia de un único árbol para cada expresión en forma lineal;  la forma de árbol representa directamente la estructura de la fórmula; pero es difícil de escribir (con la tecnología más comúnmente usada). La forma lineal es más fácil de escribir, pero más difícil de entender  forma lineal = sintaxis concreta forma de árbol = sintaxis abstracta       −×+ z yx 2 )3(
  • 6. Abstracción de la Noción de Árbol  Tratamos de definir: árbol de elementos de tipoárbol de elementos de tipo AA  Un árbol de (elementos de tipo) A es:  o bien vacío  o bien consta de:  un elemento de tipo A  más un número de árboles de elementos de tipo A
  • 7. Ejemplo de árbol no vacío
  • 8. Abstracción de la Noción de Árbol (continuación)  los elementos se llaman habitualmente NODOS del árbol  los árboles también pueden definirse como grafos con ciertas propiedades especiales. (CUALES?)
  • 9. Árboles n-arios y finitarios  árbol n-ario: si no es vacío, tiene exactamente n subárboles n-arios  árbol finitario: si no es vacío, tiene una cantidad finita de subárboles finitarios.  Pero: Todo árbol finitario puede representarse como un árbol binario, según un método a ver más adelante.
  • 10. Árboles n-arios y finitarios (ejemplos)  los árboles binarios son 2-arios (obvio)   obviamente los árboles n-arios son todos finitarios
  • 11. Árboles Binarios - Definición Inductiva  Definimos a AB (Árbol Binario de tipo ):α
  • 12. Árboles Binarios - Definición Inductiva  En la notación gráfica (bidimensional) podríamos definir:
  • 13. Funciones (recurrentes) sobre árboles binarios  Recurrencia primitiva:  f : - AB  X  f (()) = xo  f ((izq, a, der)) = c (a, f(izq), f(der) )  Recurrencia (más) general:  En los casos con llamadas recurrentes: f(t) = c ( f(t1), . . . , f (tn) )  alcanza que cada ti sea más chico que t (por ejemplo: en cantidad total de nodos). α
  • 14. Ejemplos  Tamaño:  Cant(t:AB)  Naturales (cantidad de nodos del árbol)  Cant( [] ) = 0  Cant([izq,a,der]) = 1 + Cant(izq) + Cant(der), donde a es el tipo e izq y der son árboles AB.  Prof (t:AB)  Naturales (profundidad - niveles del árbol)  Prof ([]) = 0  Prof([izq, a, der]) = 1 + max( Prof(izq), Prof (der) )
  • 15.  Máximo de un árbol binario de naturales  Max: Naturales AB  Naturales (precondición: el argumento debe ser un árbol no vacío)  Max ( [], n, [] ) = n  Max ( [], n, der) = max (n, Max (der))  Max ( izq, n, [] ) = max (n, Max (izq) )  Max (izq, n, der) = max3 (n, Max (izq), Max (der) )  (en las tres últimas ecuaciones suponemos izq y der no vacíos). Ejemplos
  • 16. Recorridas de árboles binarios:  En general, son procedimientos que visitan todos los nodos de un árbol binario efectuando cierta acción sobre cada uno de ellos.  La forma de estos procedimientos depende del orden que se elija para visitar los nodos.  Obviamente, recorrer un árbol vacío es trivial. Para recorrer un árbol no vacío hay tres órdenes naturales, según si la raíz sea visitada antes que los subárboles, entre las recorridas de los subárboles o después de recorrer los subárboles.
  • 17. Tipos de Recorrida de Árboles Primer orden: Pre orden se visita la raíz; se recorre el subárbol izquierdo; se recorre el subárbol derecho; Segundo orden: Recorrida en-orden Orden simétrico se recorre el subárbol izquierdo; se visita la raíz; se recorre el subárbol derecho; Tercer orden: Post-orden se recorre el subárbol izquierdo; se recorre el subárbol derecho; se visita la raíz;
  • 18. Árboles Binarios Ordenados (de búsqueda)  Consideremos árboles binarios de naturales (más generalmente, de cualquier tipo sobre el cual pueda definirse un orden lineal).  Un árbol binario de naturales está ordenado si cada nodo es mayor que todo nodo de su subárbol izquierdo y menor que todo nodo de su subárbol derecho.
  • 19. Árboles Binarios Ordenados (de búsqueda)  Definición inductiva: un árbol binario ordenado (de naturales) es:  o bien vacío  o bien consta de un natural n y dos árboles binarios ordenados: izq y der, tales que todo elemento de izq es menor que n y todo elemento de der es mayor que n.  (En esta definición no consideramos elementos repetidos - La generalización a este caso es obvia).  Recordar búsqueda binaria en vectores ordenados, por bipartición.
  • 20. Árboles Binarios de búsqueda- Propiedades  Los árboles binarios de búsqueda representan directamente la estructura de la búsqueda binaria:  esMiembro: Nat x Nat AB  Bool  esMiembro (n, [] ) = false  esMiembro (n, (izq, m, der) ) = case n < m  esMiembro (n, izq) n = m  true n > m  es Miembro (n, der) end
  • 21. Árboles Binarios de búsqueda- Propiedades  Otra propiedad interesante de los árboles binarios ordenados es:  su linealización en (segundo) orden es una lista ordenada  lo cual da una idea para un algoritmo de ordenamiento de listas:  dada la lista a ser ordenada, formar con sus elementos un árbol binario ordenado.  luego, listar este árbol en orden. (TreeSort)  Para resolver el primero de estos dos pasos, debe escribirse un algoritmo de inserción de un elemento en un árbol binario ordenado, de modo que el orden sea respetado.
  • 22. Representación de Árboles Binarios en C  Caben las mismas consideraciones que para las listas:  hay árboles de tamaño arbitrario  interesa representarlos como estructuras dinámicas  Por ello, la representación natural es con punteros
  • 23. Representación de Árboles Binarios en C  Definimos entonces: typedef struct nodoIntAB{ int elem; nodoIntAB *izq,*der; }*intAB;
  • 24. Representación de Árboles Binarios en C  Veamos ahora la función profundidad en C: int profAB(intAB arbol){ if(arbol == NULL) return 0; else return (1 + max(profAB(arbol->izq), profAB(arbol->der))); }
  • 25. Procedimiento de recorrida de un árbol binario en orden  Se aplica a cada nodo un procedimiento P que suponemos dado  Por ejemplo P podría ser: desplegar el elemento contenido en cada nodo void intABRecorridaP(intAB arbol){ if ( arbol == NULL) <<acción final>> else{ intABRecorridaP (arbol->izq); P(arbol->elem); intABRecorridaP (arbol->der); } }
  • 26. Procedimiento de recorrida de un árbol binario en orden  Suponemos aquí que P actúa solamente sobre los elementos (información en los nodos) y no sobre los punteros (estructura del árbol).  Dejamos abierta la posibilidad de una <<acción final>>, a realizar para cada subárbol vacío.
  • 27. ¿Cómo se escriben algoritmos iterativos sobre árboles?  recordemos las ideas de los algoritmos que recorren estructuras lineales (vectores, listas):  Vectores:  Listas:
  • 28. ¿Cómo se escriben algoritmos iterativos sobre árboles?  ¿Qué pasa en el caso de los árboles binarios?  Debemos utilizar un puntero p para indicar el siguiente nodo a visitar.  Dado que estamos considerando la recorrida en pre-orden, entonces aplicaremos la acción que nos interese al nodo corriente y luego continuaremos la recorrida, primero por el subárbol izquierdo y luego por el derecho.
  • 29. ¿Cómo se escriben algoritmos iterativos sobre árboles?  Por lo tanto, al continuar hacia el subárbol izquierdo, dejamos pendiente la recorrida del subárbol derecho.  La situación al mover el puntero p es como sigue:
  • 30. ¿Cómo se escriben algoritmos iterativos sobre árboles?  Veamos el árbol representado con punteros, de acuerdo a las definiciones dadas antes:  ¡¡¡ Y NO HAY MANERA DE VOLVER A ÉL DESDE DONDE ESTAMOS !!!
  • 31. ¿Cómo se escriben algoritmos iterativos sobre árboles?  Conclusión: hay que guardar en alguna estructura de datos los punteros a los subárboles que van quedando "pendientes".  ¿Cuál es la estructura de datos que necesitamos?
  • 32. ¿Cómo se escriben algoritmos iterativos sobre árboles?  Consideremos un caso más simple:
  • 33. ¿Cómo se escriben algoritmos iterativos sobre árboles?  Al avanzar p aparecerá otro subárbol pendiente:
  • 34. ¿Cómo se escriben algoritmos iterativos sobre árboles?  De hecho tenemos que recordar todos los sucesivos subárboles derechos que van apareciendo durante la recorrida.  Cada nuevo subárbol derecho que aparece debe ser recorrido antes que los aparecidos anteriormente (*)  Por lo tanto, podemos apilar los punteros de los subárboles pendientes.
  • 35. ¿Cómo se escriben algoritmos iterativos sobre árboles?  Dicho de otra forma: estructuramos los punteros a subárboles pendientes en una pila.  El tope será el primer subárbol pendiente a recorrer. Debido a la observación marcada con (*) arriba, cada nuevo subárbol derecho que aparezca deberá ser colocado como nuevo tope de la pila.
  • 36. ¿Cómo se escriben algoritmos iterativos sobre árboles?  Conclusión: la estructura de datos a ser utilizada para recorrer un árbol binario es como sigue:
  • 37. ¿Cómo se escriben algoritmos iterativos sobre árboles?  Con esta idea puede completarse la versión iterativa del algoritmo de recorrida en pre-orden. (Ejercicio).  Se concluye que, en general, la programación iterativa de algoritmos en árboles es MUCHO más compleja que la recurrente.  Dado que los programas iterativos son en general más eficientes, se hace interesante estudiar métodos de transformación de algoritmos recurrentes en iterativos equivalentes.
  • 38. ¿Cómo se escriben algoritmos iterativos sobre árboles?  Si estos métodos pudieran ser automatizados, entonces podrían ser aplicados directamente por un compilador.  En tal caso, podríamos construir programas simples (recurrentes) sin tener que preocuparnos por la pérdida de eficiencia.
  • 39. Inserción en un árbol binario ordenado: void indABInsertar(int x, intAB &arbol){ //Precondición: t está ordenado //Postcond: x es insertado en árbol, manteniendo el orden. If (arbol == NULL){ arbol = new (intAB); arbol->elem = x; arbol->izq = NULL; arbol->der = NULL; } else if ( x < arbol->elem) indABInsertar(x, arbol-> izq); else // x >= arbol->elem indABInsertar(x, arbol->der); }
  • 40. Inserción en un árbol binario ordenado:  Notar que se inserta siempre una nueva hoja: insertar 5 resulta en
  • 41. Representación de Árboles Finitarios como Binarios  Dado un árbol finitario:  puede representarse la misma información en un árbol binario.  La regla de la transformación es: cada nodo apunta por izquierda a su primer hijo, los hermanos se encadenan por derecha.