SlideShare une entreprise Scribd logo
1  sur  39
ARBOLES ESTRUCTURAS DE DATOS www.espol.edu.ec www.fiec.espol.edu.ec
INTRODUCCION ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
CONCEPTO ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],A es Padre B y C hijos de A: hermanos B es Padre D, E, F hijos de B A B D E C F B D E F
TERMINOLOGIA ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TDA ARBOL : DEFINICION INFORMAL ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TDA ARBOL: DEFINICION FORMAL ,[object Object],[object Object],[object Object]
ARBOLES BINARIOS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Sub. Izq. Sub. Der. A B C D A B C D E H I F G J RAIZ
DEFINICIONES RECURSIVAS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Caso Básico Un árbol con un solo nodo tiene nivel 1 Caso Recursivo Si tiene mas de un nodo, el nivel es: 1 + MAX(Nivel(SubIzq), Nivel(SubDer)) S. izq. Nivel 1 S. der. Nivel 1 Nivel Del Arbol: 2 SUB. IZQ. Nivel = 1 + Max(0, Sub.Izq ) SUB. DER. Nivel 1 SUB. IZQ. Nivel = 1 + Max(0, Sub.Izq. ) SUB. DER.. Nivel = 1 NIVEL : 1 + MAX(S.IZQ, S.DER) NIVEL : 1 + MAX(3, 1) NIVEL : 4 SUB. IZQ. Nivel = 3   A nivel 1 A B C SUB. IZQ. Nivel = 1 + Max(0, 1 ) A B C D E SUB. IZQ. Nivel = 1 + Max(0, 2 )
ARBOLES BINARIOS LLENOS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ARBOLES BINARIOS COMPLETOS ,[object Object],[object Object],[object Object],[object Object]
OTROS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
RECORRIDOS DE UN A.B. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
EJEMPLO PREORDEN G G-D G-D-B G-D-B-A G-D-B-A-C G-D-B-A-C-E G-D-B-A-C-E-F G-D-B-A-C-E-F-K G-D-B-A-C-E-F-K-H G-D-B-A-C-E-F-K-H-J G-D-B-A-C-E-F-K-H-J-I G-D-B-A-C-E-F-K-H-J-I-M G-D-B-A-C-E-F-K-H-J-I-M-L 1. Visitar raiz 2. Preorden al Subarbol Izq. 3. Preorden al Subarbol Der. G D K B E H M A C F J I L G 1 D 2 B 3 A 4 C 5 E 6 F 7 K 8 H 9 J 10 I 11 M 12 L 13
AB y NODOAB: DEFINICION FORMAL ,[object Object],[object Object],[object Object],[object Object],[object Object]
AB Y NODOAB: DECLARACION ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],typedef struct NodoAB *AB;
NODOAB : OPERACIONES ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
NODOAB: MAS OPERACIONES ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
AB: CREAR NODO HOJA ,[object Object],NodoAB *NuevaHoja(Generico G){ NodoAB *nuevo; nuevo = (NodoAB *)malloc(sizeof(NodoAB)); nuevo->G = G; nuevo->izq = NULL; nuevo->der= NULL; return nuevo; }
AB: OPERACIONES ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
AB: INSTANCIANDO Y CREANDO ,[object Object],void AB_Vaciar(AB *A){ *A = NULL; } ,[object Object],[object Object],[object Object],[object Object],AB A; AB_Vaciar(&A); A = NodoAB_CrearHoja(Generico_CrearEntero(1)); 1 A
RECORRIDOS: IMPLEMENTACION ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OPERACION ENORDEN void AB_EnOrden(AB A, Generico_fnImprimir imprimir){ if(!AB_EstaVacio(A)){ AB_EnOrden(A->izq,imprimir);   imprimir (A->G); AB_EnOrden(A->der,imprimir); } } Arbol Vacio!, Terminar Arbol Vacio!, Terminar Arbol Vacio!, Terminar Arbol Vacio!, Terminar Arbol Vacio!, Terminar Arbol Vacio!, Terminar Arbol Vacio!, Terminar Arbol Vacio!, Terminar A B C D E F G D 1 B 2 E 3 A 4 F 5 C 6 G 7
APLICACIÓN: EVALUACION DE EXPRESIONES  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ARBOL DE EXPRESION ,[object Object],[object Object],[object Object],[object Object],[object Object],(a+b)*c + a b + a b c *
EJERCICIO EN CLASE ,[object Object],[object Object],[object Object],+ a * b - + c d
EVALUAR UNA EXPRESION ARTIMETICA EN INFIJA ,[object Object],[object Object],[object Object],[object Object],[object Object]
CREAR UN ARBOL DE EXPRESION ,[object Object],[object Object],[object Object],[object Object],[object Object],A*B-C*D+H AB*CD*-H+ A B * B A C D * D C - H + H * D C * B A - * D C * B A
EVALUACION DE LA EXP. POSTFIJA ,[object Object],[object Object],[object Object],Para evaluar el arbol: Si el arbol tiene un solo nodo  y este almacena un operando El resultado de la evaluacion es el valor de ese  operando Si no 1. Res1 = Evaluo subarbol izquierdo 2. Res2 = Evaluo subarbol derecho 3. Recupero la info de la raiz y efectuo la operación alli indicada, entre Res1 y Res2 A A y B A * B (A * B) y C (A * B) y C y D (A * B) y (C*D) (A * B) - (C*D) (A * B) - (C*D) y H (A * B) - (C*D) + H + - * D C * B A H
ARBOL BINARIO DE BUSQUEDA ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],<> 30 41 75 55 4 85 <> 4 5 9 6
TDA ABB: DEFINICION ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],<abb>::= NULL | <abb_nodo> <abb_nodo>::=<clave>+<contenido>+<izq>+<der> <izq>::=<abb> <der>::=<abb> <clave>::<<dato>>|{<<dato>>} <contenido>::<<dato>>|{<<dato>>} typedef struct ABB_Nodo{ Generico clave, G; ABB_Nodo *izq, *der; }ABB_Nodo;
CREAR CON CLAVE ,[object Object],[object Object],[object Object],NodoAB *NuevaHoja(Generico clave, Generico contenido){ NodoArbol *nuevo; nuevo = malloc(sizeof(NodoArbol)); nuevo->clave = clave; nuevo->G = contenido; nuevo->izq = NULL; nuevo->der= NULL; return nuevo; }
CREACION DE UN ABB ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],8 3 1 20 10 5 4
EJERCICIO EN CLASE ,[object Object],[object Object]
BUSQUEDA DE UN NODO ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Buscar(raiz,5) 5 5 Buscar(raiz,25) No existe 8 3 1 20 10 5 4
IMPLEMENTACION DE LA BUSQUEDA NodoABB *ABB_Buscar(ABB A, Generico clave, Generico_fnComparar comp){ if(ABB_EstaVacio(A)) return NULL; if(f(clave,  A->clave ) == 0) return A; if(f(clave, A->clave) > 0)) return ABB_Buscar(A->der, clave, comp); else return ABB_Buscar(A->izq, clave, comp); }
INSERCION DE UN NODO ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Insertar(raiz,15) 15>8…der 15<20…izq 15>10…der Insertar aqui 15 8 3 1 20 10 5 4
IMPLEMENTACION DE LA INSERCION bool ABB_Insertar(ABB *A, NodoABB *nuevo, Generico_fnComparar f){ if(!ABB_EstaVacio(*A)){ if(f(nuevo->clave, (*A)->clave) >0) ABB_Insertar((*A)->der, nuevo,f); else if (f(nuevo->clave, (*A)->clave) <0) ABB_Insertar((*A)->izq,nuevo,f); else return FALSE; } else{ //Si esta vacio, alli insertar *A = nuevo; } return TRUE; }
ELIMINACION DE UN NODO ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Eliminar(raiz,34) 34 nmayor 28 28 34 18 6 90 28 25 20 100
SACAR NODO: CODIGO NodoABB *ABB_SacarNodoxContenido(ABB *A, Generico clave,  Generico_fnComparar fn){ NodoABB *p, *tmp = *A; if(ABB_EstaVacio(*A)) return NULL; if(fn((*A)->clave, clave) < 0) return(ABB_SacarNodoxContenido(&(*A)->der, clave, fn)); else if(fn((*A)->clave, clave) >0) return(ABB_SacarNodoxContenido(&(*A)->izq, clave, fn)); if((*A)->der == NULL) (*A) = (*A)->izq; else if((*A)->izq == NULL) (*A) = (*A)->der; else tmp = ABB_SacarRaiz(A); return tmp; }

Contenu connexe

Tendances

diagrama de colaboracion
diagrama de colaboraciondiagrama de colaboracion
diagrama de colaboracion
still01
 
Ordenamiento por monticulo (heapsort)
Ordenamiento por monticulo (heapsort)Ordenamiento por monticulo (heapsort)
Ordenamiento por monticulo (heapsort)
edopaz
 

Tendances (20)

Diagrama de actividades power point
Diagrama de actividades power pointDiagrama de actividades power point
Diagrama de actividades power point
 
Glosario uml
Glosario umlGlosario uml
Glosario uml
 
Programación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de KruskalProgramación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de Kruskal
 
Uml clase 04_uml_clases
Uml clase 04_uml_clasesUml clase 04_uml_clases
Uml clase 04_uml_clases
 
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)
 
Calculo relacional de base de datos
Calculo relacional de base de datosCalculo relacional de base de datos
Calculo relacional de base de datos
 
diagrama de colaboracion
diagrama de colaboraciondiagrama de colaboracion
diagrama de colaboracion
 
Modelos de dominio
Modelos de dominioModelos de dominio
Modelos de dominio
 
Arboles
ArbolesArboles
Arboles
 
Jerarquía de clases, herencia, polimorfismo
Jerarquía de clases, herencia, polimorfismoJerarquía de clases, herencia, polimorfismo
Jerarquía de clases, herencia, polimorfismo
 
Estructura de Datos - Estructuras no lineales
Estructura de Datos - Estructuras no linealesEstructura de Datos - Estructuras no lineales
Estructura de Datos - Estructuras no lineales
 
Ejemplo pruebas de software
Ejemplo pruebas de softwareEjemplo pruebas de software
Ejemplo pruebas de software
 
Ejercicios con ml con soluciones
Ejercicios con ml con solucionesEjercicios con ml con soluciones
Ejercicios con ml con soluciones
 
Oc
OcOc
Oc
 
Diagrama De Secuencia
Diagrama De SecuenciaDiagrama De Secuencia
Diagrama De Secuencia
 
Diagrama de contexto
Diagrama de contextoDiagrama de contexto
Diagrama de contexto
 
Ordenamiento por monticulo (heapsort)
Ordenamiento por monticulo (heapsort)Ordenamiento por monticulo (heapsort)
Ordenamiento por monticulo (heapsort)
 
Unidad 6
Unidad 6Unidad 6
Unidad 6
 
Árboles binarios, ABB y AVL
Árboles binarios, ABB y AVLÁrboles binarios, ABB y AVL
Árboles binarios, ABB y AVL
 
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
 

En vedette

Apuntes De Matematicas Discretas
Apuntes De Matematicas DiscretasApuntes De Matematicas Discretas
Apuntes De Matematicas Discretas
guest553c2e
 
Presentacion Proyecto Grupo Nro 02
Presentacion Proyecto Grupo Nro 02Presentacion Proyecto Grupo Nro 02
Presentacion Proyecto Grupo Nro 02
matediscretas
 
17 Introduccion Arboles
17 Introduccion Arboles17 Introduccion Arboles
17 Introduccion Arboles
UVM
 

En vedette (20)

Apuntes De Matematicas Discretas
Apuntes De Matematicas DiscretasApuntes De Matematicas Discretas
Apuntes De Matematicas Discretas
 
Actividad#7,Arboles subgrupo #1
Actividad#7,Arboles subgrupo #1Actividad#7,Arboles subgrupo #1
Actividad#7,Arboles subgrupo #1
 
Proyecto matediscreta
Proyecto matediscretaProyecto matediscreta
Proyecto matediscreta
 
Teoría de árboles
Teoría de árbolesTeoría de árboles
Teoría de árboles
 
Arboles
ArbolesArboles
Arboles
 
Árboles Binarios y Grafos
Árboles Binarios  y GrafosÁrboles Binarios  y Grafos
Árboles Binarios y Grafos
 
Matematica discretas presentación inicial
Matematica discretas  presentación inicialMatematica discretas  presentación inicial
Matematica discretas presentación inicial
 
Arboles teoria 1
Arboles teoria 1Arboles teoria 1
Arboles teoria 1
 
Relaciones binarias aux
Relaciones binarias auxRelaciones binarias aux
Relaciones binarias aux
 
Matemática Discreta y Lógica/Fanjul Roberto
Matemática Discreta y Lógica/Fanjul RobertoMatemática Discreta y Lógica/Fanjul Roberto
Matemática Discreta y Lógica/Fanjul Roberto
 
Matematica discreta diapositivas nº 1
Matematica discreta   diapositivas nº 1Matematica discreta   diapositivas nº 1
Matematica discreta diapositivas nº 1
 
Arboles con raiz
Arboles con raizArboles con raiz
Arboles con raiz
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Teoría de decisión
Teoría de decisiónTeoría de decisión
Teoría de decisión
 
Presentacion Proyecto Grupo Nro 02
Presentacion Proyecto Grupo Nro 02Presentacion Proyecto Grupo Nro 02
Presentacion Proyecto Grupo Nro 02
 
Matematica discreta2011 unidad3_2ºparte_2011
Matematica discreta2011 unidad3_2ºparte_2011Matematica discreta2011 unidad3_2ºparte_2011
Matematica discreta2011 unidad3_2ºparte_2011
 
Arboles de expresion
Arboles de expresionArboles de expresion
Arboles de expresion
 
17 Introduccion Arboles
17 Introduccion Arboles17 Introduccion Arboles
17 Introduccion Arboles
 
Arboles
ArbolesArboles
Arboles
 
Actividad Teoría de Árboles.
Actividad Teoría de Árboles.Actividad Teoría de Árboles.
Actividad Teoría de Árboles.
 

Similaire à Arboles (20)

Arboles TDAS
Arboles TDASArboles TDAS
Arboles TDAS
 
ARBOLES
ARBOLESARBOLES
ARBOLES
 
12. Arboles.ppt
12. Arboles.ppt12. Arboles.ppt
12. Arboles.ppt
 
Arboles presentacion
Arboles presentacionArboles presentacion
Arboles presentacion
 
Arboles02
Arboles02Arboles02
Arboles02
 
Arboles
ArbolesArboles
Arboles
 
04 curso-prope-py ed-arboles
04 curso-prope-py ed-arboles04 curso-prope-py ed-arboles
04 curso-prope-py ed-arboles
 
áRboles binarios
áRboles binariosáRboles binarios
áRboles binarios
 
áRboles binarios
áRboles binariosáRboles binarios
áRboles binarios
 
Arboles
ArbolesArboles
Arboles
 
Para leer estructuras
Para leer estructurasPara leer estructuras
Para leer estructuras
 
Para leer estructuras
Para leer estructurasPara leer estructuras
Para leer estructuras
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binarios
 
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
 
Trees dts
Trees dtsTrees dts
Trees dts
 
Arboles
Arboles Arboles
Arboles
 
Arboles ppt
Arboles pptArboles ppt
Arboles ppt
 
tema4.pdf
tema4.pdftema4.pdf
tema4.pdf
 
Sustentacion arboles
Sustentacion arbolesSustentacion arboles
Sustentacion arboles
 
Árboles Binarios
Árboles BinariosÁrboles Binarios
Árboles Binarios
 

Plus de Johanna Toledo Morillo (19)

Logica Juridica
Logica JuridicaLogica Juridica
Logica Juridica
 
Contrato Ocasional
Contrato OcasionalContrato Ocasional
Contrato Ocasional
 
Rodrigo Borja Cevallos
Rodrigo Borja CevallosRodrigo Borja Cevallos
Rodrigo Borja Cevallos
 
Ventajas De La ComunicacióN
Ventajas De La ComunicacióNVentajas De La ComunicacióN
Ventajas De La ComunicacióN
 
Niveles De La ComunicacióN Oral
Niveles De La ComunicacióN OralNiveles De La ComunicacióN Oral
Niveles De La ComunicacióN Oral
 
Comunicacion
ComunicacionComunicacion
Comunicacion
 
Crear vocabulario
Crear vocabularioCrear vocabulario
Crear vocabulario
 
Gran Depresion
Gran DepresionGran Depresion
Gran Depresion
 
Comunicación Oral
Comunicación OralComunicación Oral
Comunicación Oral
 
Comunicaciòn Interpersonal
Comunicaciòn InterpersonalComunicaciòn Interpersonal
Comunicaciòn Interpersonal
 
Comunicación Empresarial
Comunicación EmpresarialComunicación Empresarial
Comunicación Empresarial
 
Grafos 2
Grafos 2Grafos 2
Grafos 2
 
19 Grafos 1
19 Grafos 119 Grafos 1
19 Grafos 1
 
Heaps
HeapsHeaps
Heaps
 
1 Tipos De Datos Ejercicios
1 Tipos De Datos Ejercicios1 Tipos De Datos Ejercicios
1 Tipos De Datos Ejercicios
 
Tipos De Datos
Tipos De DatosTipos De Datos
Tipos De Datos
 
Tipo de Datos
Tipo de DatosTipo de Datos
Tipo de Datos
 
U 1 Ae. %2 Bconceptos%2 Bbasicos%2 Bde%2 Badminist.%2 By%2 Borganiz
U 1 Ae. %2 Bconceptos%2 Bbasicos%2 Bde%2 Badminist.%2 By%2 BorganizU 1 Ae. %2 Bconceptos%2 Bbasicos%2 Bde%2 Badminist.%2 By%2 Borganiz
U 1 Ae. %2 Bconceptos%2 Bbasicos%2 Bde%2 Badminist.%2 By%2 Borganiz
 
A
AA
A
 

Arboles

  • 1. ARBOLES ESTRUCTURAS DE DATOS www.espol.edu.ec www.fiec.espol.edu.ec
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13. EJEMPLO PREORDEN G G-D G-D-B G-D-B-A G-D-B-A-C G-D-B-A-C-E G-D-B-A-C-E-F G-D-B-A-C-E-F-K G-D-B-A-C-E-F-K-H G-D-B-A-C-E-F-K-H-J G-D-B-A-C-E-F-K-H-J-I G-D-B-A-C-E-F-K-H-J-I-M G-D-B-A-C-E-F-K-H-J-I-M-L 1. Visitar raiz 2. Preorden al Subarbol Izq. 3. Preorden al Subarbol Der. G D K B E H M A C F J I L G 1 D 2 B 3 A 4 C 5 E 6 F 7 K 8 H 9 J 10 I 11 M 12 L 13
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22. OPERACION ENORDEN void AB_EnOrden(AB A, Generico_fnImprimir imprimir){ if(!AB_EstaVacio(A)){ AB_EnOrden(A->izq,imprimir); imprimir (A->G); AB_EnOrden(A->der,imprimir); } } Arbol Vacio!, Terminar Arbol Vacio!, Terminar Arbol Vacio!, Terminar Arbol Vacio!, Terminar Arbol Vacio!, Terminar Arbol Vacio!, Terminar Arbol Vacio!, Terminar Arbol Vacio!, Terminar A B C D E F G D 1 B 2 E 3 A 4 F 5 C 6 G 7
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35. IMPLEMENTACION DE LA BUSQUEDA NodoABB *ABB_Buscar(ABB A, Generico clave, Generico_fnComparar comp){ if(ABB_EstaVacio(A)) return NULL; if(f(clave, A->clave ) == 0) return A; if(f(clave, A->clave) > 0)) return ABB_Buscar(A->der, clave, comp); else return ABB_Buscar(A->izq, clave, comp); }
  • 36.
  • 37. IMPLEMENTACION DE LA INSERCION bool ABB_Insertar(ABB *A, NodoABB *nuevo, Generico_fnComparar f){ if(!ABB_EstaVacio(*A)){ if(f(nuevo->clave, (*A)->clave) >0) ABB_Insertar((*A)->der, nuevo,f); else if (f(nuevo->clave, (*A)->clave) <0) ABB_Insertar((*A)->izq,nuevo,f); else return FALSE; } else{ //Si esta vacio, alli insertar *A = nuevo; } return TRUE; }
  • 38.
  • 39. SACAR NODO: CODIGO NodoABB *ABB_SacarNodoxContenido(ABB *A, Generico clave, Generico_fnComparar fn){ NodoABB *p, *tmp = *A; if(ABB_EstaVacio(*A)) return NULL; if(fn((*A)->clave, clave) < 0) return(ABB_SacarNodoxContenido(&(*A)->der, clave, fn)); else if(fn((*A)->clave, clave) >0) return(ABB_SacarNodoxContenido(&(*A)->izq, clave, fn)); if((*A)->der == NULL) (*A) = (*A)->izq; else if((*A)->izq == NULL) (*A) = (*A)->der; else tmp = ABB_SacarRaiz(A); return tmp; }