SlideShare a Scribd company logo
1 of 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; }

More Related Content

What's hot

Heap sort (Monticulos)
Heap sort (Monticulos)Heap sort (Monticulos)
Heap sort (Monticulos)leidy2220
 
Listas Doblemente Enlazadas y Listas Circulares
Listas Doblemente Enlazadas y Listas CircularesListas Doblemente Enlazadas y Listas Circulares
Listas Doblemente Enlazadas y Listas CircularesMago Julio Cesar
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacionLuis Igoodbad
 
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
 
Eliminar elementos de una cola
Eliminar elementos de una colaEliminar elementos de una cola
Eliminar elementos de una colajeffersoncenteno
 
ENTRADA Y SALIDA DE DATOS EN JAVA
ENTRADA Y SALIDA DE DATOS EN JAVAENTRADA Y SALIDA DE DATOS EN JAVA
ENTRADA Y SALIDA DE DATOS EN JAVAGabriel Suarez
 
Métodos POO
Métodos POOMétodos POO
Métodos POO1da4
 
Arboles B y Arboles B+
Arboles B y Arboles B+Arboles B y Arboles B+
Arboles B y Arboles B+neltherdaza
 
Arbol binario de busqueda java
Arbol binario de busqueda   javaArbol binario de busqueda   java
Arbol binario de busqueda javaFranco Guamán
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1Clara Patricia Avella Ibañez
 
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 linealesJosé Antonio Sandoval Acosta
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datosSergio Sanchez
 

What's hot (20)

COLAS
COLASCOLAS
COLAS
 
Heap sort (Monticulos)
Heap sort (Monticulos)Heap sort (Monticulos)
Heap sort (Monticulos)
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Listas Doblemente Enlazadas y Listas Circulares
Listas Doblemente Enlazadas y Listas CircularesListas Doblemente Enlazadas y Listas Circulares
Listas Doblemente Enlazadas y Listas Circulares
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacion
 
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
 
Eliminar elementos de una cola
Eliminar elementos de una colaEliminar elementos de una cola
Eliminar elementos de una cola
 
ENTRADA Y SALIDA DE DATOS EN JAVA
ENTRADA Y SALIDA DE DATOS EN JAVAENTRADA Y SALIDA DE DATOS EN JAVA
ENTRADA Y SALIDA DE DATOS EN JAVA
 
Métodos POO
Métodos POOMétodos POO
Métodos POO
 
Arboles B y Arboles B+
Arboles B y Arboles B+Arboles B y Arboles B+
Arboles B y Arboles B+
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
Flujo datos
Flujo datosFlujo datos
Flujo datos
 
Algoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap SortAlgoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap Sort
 
Arbol binario de busqueda java
Arbol binario de busqueda   javaArbol binario de busqueda   java
Arbol binario de busqueda java
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Tipos De Datos Abstractos Colas
Tipos De Datos Abstractos ColasTipos De Datos Abstractos Colas
Tipos De Datos Abstractos Colas
 
Arbol aa
Arbol aaArbol aa
Arbol aa
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1
 
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
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datos
 

Viewers also liked

Apuntes De Matematicas Discretas
Apuntes De Matematicas DiscretasApuntes De Matematicas Discretas
Apuntes De Matematicas Discretasguest553c2e
 
Actividad#7,Arboles subgrupo #1
Actividad#7,Arboles subgrupo #1Actividad#7,Arboles subgrupo #1
Actividad#7,Arboles subgrupo #1Joshua Castro
 
Árboles Binarios y Grafos
Árboles Binarios  y GrafosÁrboles Binarios  y Grafos
Árboles Binarios y GrafosNoel E Jimenez
 
Matematica discretas presentación inicial
Matematica discretas  presentación inicialMatematica discretas  presentación inicial
Matematica discretas presentación inicialJairo Galeas
 
Arboles teoria 1
Arboles teoria 1Arboles teoria 1
Arboles teoria 1RBonvicino
 
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 RobertoBiblioteca Central FACET
 
Matematica discreta diapositivas nº 1
Matematica discreta   diapositivas nº 1Matematica discreta   diapositivas nº 1
Matematica discreta diapositivas nº 1Grabiel Alvarez
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datosnukeeHE
 
Teoría de decisión
Teoría de decisiónTeoría de decisión
Teoría de decisiónGabriel Pujol
 
Presentacion Proyecto Grupo Nro 02
Presentacion Proyecto Grupo Nro 02Presentacion Proyecto Grupo Nro 02
Presentacion Proyecto Grupo Nro 02matediscretas
 
Matematica discreta2011 unidad3_2ºparte_2011
Matematica discreta2011 unidad3_2ºparte_2011Matematica discreta2011 unidad3_2ºparte_2011
Matematica discreta2011 unidad3_2ºparte_2011gmromano
 
17 Introduccion Arboles
17 Introduccion Arboles17 Introduccion Arboles
17 Introduccion ArbolesUVM
 

Viewers also liked (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
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binarios
 
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
 

Similar to 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
 

More from 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; }