SlideShare una empresa de Scribd logo
Árboles Binarios
Las estructuras dinámicas son las en la ejecución
varia el número de elementos y uso de memoria a lo
largo del programa)
Entre estas tenemos:
Lineales (listas enlazadas, pilas y colas)
No lineales (arboles binarios y grafos o redes)
¿Qué es un Árbol?
• Es una estructura de datos jerárquica.
• La relación entre los elementos es de uno a
muchos.
Terminología
• Nodo: Cada elemento en un árbol.
• Nodo Raíz: Primer elemento agregado al árbol.
B
A
D E
H
F
K
G
C
Nodo Raíz
Más terminología
• Nodo Padre: Se le llama así al nodo predecesor de un elemento.
• Nodo Hijo: Es el nodo sucesor de un elemento.
• Hermanos: Nodos que tienen el mismo nodo padre.
B
A
D E
H
F
K
G
C
Nodo Padre
F y G son Nodos Hijos de C
F y G son hermanos
Más terminología
• Nodo Hoja: Aquel nodo que no tiene hijos.
B
A
D E
H
F
K
G
C
D, H, F y K son Nodos Hojas
Más terminología
• Subárbol: Todos los nodos descendientes por la izquierda
o derecha de un nodo.
B
A
D E
H
F
K
G
C
Subárbol derecho de C
Subárbol izquierdo de C
Altura y Niveles
Nivel 0
Nivel 1
Nivel 2
Nivel 3
Altura
del árbol
= 4
B
A
D E
H
F
K
G
C
La Altura es la cantidad de niveles.
Árbol Binario de Búsqueda (ABB)
• Este tipo de árbol permite almacenar
información ordenada.
• Reglas a cumplir:
– Cada nodo del árbol puede tener 0, 1 ó 2 hijos.
– Los descendientes izquierdos deben tener un
valor menor al padre.
– Los descendientes derechos deben tener un valor
mayor al padre.
Ejemplos de ABB…
13
21
5 18
15
25
40
36
33
21
30
32
43
41
33
¿Por qué no son ABB?
13
21
17 18
15
25
40
22
33
1
5
2 4
6
Implementación de un ABB…
class NodoArbol
{
public:
int info;
NodoArbol *izq, *der;
NodoArbol( );
NodoArbol(int dato);
};
NodoArbol(void) { izq = der = NULL; }
NodoArbol(int dato) { info = dato; izq = der = NULL; }
Continuación…
class ABB
{
private:
NodoArbol *raiz;
public:
ABB( ); // constructor
~ABB( ); // destructor
//otros métodos
};
Proceso para buscar un nodo...
13
21
10 18 25
40
33
¿El 25 es mayor o
menor que el 21?
Buscar el 25
13
21
10 18 25
40
33
¿El 25 es
mayor o menor
que el 33?
13
21
10 18 25
40
33
Encontrad
o
Paso
1
Paso
2
Paso
3
Implementación de la búsqueda
...
p=raiz;
while (p != NULL)
{ if (p->info == valor)
return p;
else
p=(p->info > valor? p->izq: p->der);
}
return NULL;
…
P contiene la dirección del nodo
que tiene el valor buscado
No se encontró el valor por lo que
se regresa un NULL
Equivalente a:
if ( p -> info > valor )
p = p -> izq;
else p = p-> der;
Proceso para agregar nodos...
• Reglas:
– El valor a insertar no existe en el árbol.
– El nuevo nodo será un Nodo Hoja del árbol.
• Procedimiento
1. Buscar el Nodo Padre del nodo a agregar.
2. Agregar el nodo hoja.
Ejemplo
13
21
10 18 25
40
33
¿El 26 es mayor o
menor que el 21?
Agregar el valor 26
13
21
10 18 25
40
33
¿El 26 es
mayor o menor
que el 33?
13
21
10 18 25
40
33
Se encontró el Nodo
Padre
Paso
1
Paso
2
Paso
3
13
21
10 18 25
40
33
Agregar el nodo
Paso
4
26
Comentarios importantes....
• El orden de inserción de los datos, determina la forma del ABB.
• ¿Qué pasará si se insertan los datos en forma ordenada?
• La forma del ABB determina la eficiencia del proceso de búsqueda.
• Entre menos altura tenga el ABB, más balanceado estará, y más
eficiente será.
13
10
18
21
25
Este árbol está
desbalanceado
porque los valores se
agregaron en el siguiente
orden:
10, 13, 18, 21, 25, 33, 40
bool ABB::Insertar(int valor)
{
NodoArbol *nuevo, *actual, *anterior;
nuevo = new NodoArbol(valor);
actual = raiz;
anterior = NULL;
while ( actual != NULL )
{
if ( valor == actual -> info ) return 0;
anterior = actual;
actual = (actual->info > valor ? actual->izq : actual->der);
}
if(anterior==NULL)
raiz=nuevo;
else {
if ( anterior -> info > valor )
anterior -> izq = nuevo;
else
anterior -> der = nuevo;
}
return 1;
}
Implementación....
Busca el Nodo Padre.
Al final, Anterior será el
padre del nuevo nodo.
Agrega el nodo como
nodo hoja.
Si Anterior es igual a
NULL quiere decir que
el árbol está vacío por
lo que el nodo a agregar
será la raíz.
Proceso para eliminar un nodo
• Si el nodo a eliminar es un:
– Nodo hoja
• Buscar el Nodo Padre del nodo a borrar.
• Desconectarlo.
• Liberar el nodo.
– Nodo con un hijo
• Buscar el Nodo Padre del nodo a borrar.
• Conectar el hijo con el padre del nodo a borrar.
• Liberar el nodo.
– Nodo con dos hijos
• Localizar el nodo predecesor o sucesor del nodo a borrar.
• Copiar la información.
• Eliminar el predecesor o sucesor según sea el caso.
Caso: Eliminar Nodo hoja
13
21
10 18 25 40
33
Nodo Padre
localizado
13
21
10 18 25
40
33
Desconectarlo y
liberar el nodo
Paso
1
Paso
2
Eliminar el valor 25
Caso: Eliminar Nodo con un hijo
13
21
10 18 25 40
33
Nodo Padre
localizado
13
21
10 18
25
40
33
Conectar el Nodo
Padre con el Nodo
Hijo y liberar el
nodo.
Paso
1
Paso
2
Eliminar el valor 25
29
27 30
29
27 30
Caso: Eliminar nodo con dos hijos
1. Localizar el nodo predecesor o sucesor del
nodo a borrar.
– El PREDECESOR es “el Mayor de los Menores”.
– El SUCESOR es “el Menor de los Mayores”.
– Para la implementación es igual de eficiente
programar la búsqueda del predecesor que del
sucesor.
1. El valor del Predecedor (o sucesor) se copia al
nodo a borrar.
2. Eliminar el nodo del predecesor (o sucesor
según sea el caso).
Predecesor
13
21
10 25 40
33
29
27 30
El predecesor de: Es:
33 30
21 13
29 27
Uno a la IZQUIERDA y todo a la DERECHA
Sucesor
13
21
10 18 25 40
33
29
27 30
El sucesor de: Es:
21 25
33 40
29 30
Uno a la DERECHA y todo a la IZQUIERDA
Implementación del....
P = actual -> izq;
while( p -> der != NULL)
p=p->der;
return p;
P = actual -> der;
While (p -> izq != NULL )
p=p->izq;
return p;
PREDECESOR
SUCESOR
actual apunta al nodo a borrar
Caso: Eliminar Nodo con dos hijos
13
21
10 18 25
40
33
Localizar el valor a
borrar
Paso
1
Eliminar el valor 21
utilizando el predecesor
13
21
10 18 25
40
33
Localizar el Predecesor
Paso
2
13
18
10 18 25
40
33
Copiar el valor del
Predecesor al nodo que
contenía el valor a borrar
Paso
3
13
18
10 18 25 40
33
Desconectar y liberar el
nodo del Predecesor
Paso
4
Eliminar el valor 21
utilizando el Sucesor
Caso: Eliminar Nodo con dos hijos
13
21
10 18 25
40
33
Localizar el valor a
borrar
Paso
1
13
21
10 18 25
40
33
Localizar el Sucesor
Paso
2
13
25
10 18 25
40
33
Copiar el valor del
Sucesor al nodo que
contenía el valor a borrar
Paso
3
13
18
10 18 25 40
33
Desconectar y liberar el
nodo del Sucesor
Paso
4

Más contenido relacionado

La actualidad más candente

Programación 3: tablas de dispersión
Programación 3: tablas de dispersiónProgramación 3: tablas de dispersión
Programación 3: tablas de dispersiónAngel Vázquez Patiño
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discretaJunior Soto
 
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
 
Informe Final Del Proyecto Poo
Informe Final Del Proyecto PooInforme Final Del Proyecto Poo
Informe Final Del Proyecto PooEPN
 
Informe Proyecto Final
Informe Proyecto FinalInforme Proyecto Final
Informe Proyecto FinalJorge Ramon
 
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.Bryan Aguilar Yaguana
 
Estructura de datos : Cola
Estructura de datos : ColaEstructura de datos : Cola
Estructura de datos : ColaEmerson Garay
 

La actualidad más candente (20)

Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Clases y objetos en Java
Clases y objetos en JavaClases y objetos en Java
Clases y objetos en Java
 
Programación 3: tablas de dispersión
Programación 3: tablas de dispersiónProgramación 3: tablas de dispersión
Programación 3: tablas de dispersión
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Ordenamiento parte 2
Ordenamiento parte 2Ordenamiento parte 2
Ordenamiento parte 2
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discreta
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
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
 
Informe Final Del Proyecto Poo
Informe Final Del Proyecto PooInforme Final Del Proyecto Poo
Informe Final Del Proyecto Poo
 
Informe Proyecto Final
Informe Proyecto FinalInforme Proyecto Final
Informe Proyecto Final
 
Programa de Cola Estática
Programa de Cola EstáticaPrograma de Cola Estática
Programa de Cola Estática
 
NOTACIÓN POSTFIJA E INFIJA - JAVA
NOTACIÓN POSTFIJA E INFIJA - JAVANOTACIÓN POSTFIJA E INFIJA - JAVA
NOTACIÓN POSTFIJA E INFIJA - JAVA
 
Arboles Binarios
Arboles BinariosArboles Binarios
Arboles Binarios
 
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
 
TABLA DE SÍMBOLOS
TABLA DE SÍMBOLOSTABLA DE SÍMBOLOS
TABLA DE SÍMBOLOS
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Estructura de datos : Cola
Estructura de datos : ColaEstructura de datos : Cola
Estructura de datos : Cola
 
Aplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafosAplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafos
 
Listas
ListasListas
Listas
 

Similar a 1 árbol (20)

Abinariosbusqueda
AbinariosbusquedaAbinariosbusqueda
Abinariosbusqueda
 
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
 
Arboles02
Arboles02Arboles02
Arboles02
 
Arboles
Arboles Arboles
Arboles
 
Arboles ppt
Arboles pptArboles ppt
Arboles ppt
 
12. Arboles.ppt
12. Arboles.ppt12. Arboles.ppt
12. Arboles.ppt
 
Arboles
ArbolesArboles
Arboles
 
ARBOLES
ARBOLESARBOLES
ARBOLES
 
Arboles.pdf
Arboles.pdfArboles.pdf
Arboles.pdf
 
Arboles
ArbolesArboles
Arboles
 
Presentación Árbol Binario
Presentación Árbol BinarioPresentación Árbol Binario
Presentación Árbol Binario
 
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
 
GRAFOS
GRAFOSGRAFOS
GRAFOS
 
Arbol b ASIRB
Arbol b ASIRBArbol b ASIRB
Arbol b ASIRB
 
Árboles Rojo - Negro
Árboles Rojo - NegroÁrboles Rojo - Negro
Árboles Rojo - Negro
 
Estructura de Datos - Estructuras no lineales
Estructura de Datos - Estructuras no linealesEstructura de Datos - Estructuras no lineales
Estructura de Datos - Estructuras no lineales
 
Arboles TDAS
Arboles TDASArboles TDAS
Arboles TDAS
 
Proyecto estructura
Proyecto estructuraProyecto estructura
Proyecto estructura
 

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
 
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
 
2 arboles
2 arboles2 arboles
2 arboles
 
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
 

Último

Ferias de ciencias y estrategia STEAM – PNFCyT 2024.pdf
Ferias de ciencias y estrategia STEAM – PNFCyT 2024.pdfFerias de ciencias y estrategia STEAM – PNFCyT 2024.pdf
Ferias de ciencias y estrategia STEAM – PNFCyT 2024.pdfJudithRomero51
 
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdfUn libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdfsandradianelly
 
Poemas de Beatriz Giménez de Ory_trabajos de 6º
Poemas de Beatriz Giménez de Ory_trabajos de 6ºPoemas de Beatriz Giménez de Ory_trabajos de 6º
Poemas de Beatriz Giménez de Ory_trabajos de 6ºCEIP TIERRA DE PINARES
 
PROYECTO INTEGRADOR ARCHIDUQUE. presentacion
PROYECTO INTEGRADOR ARCHIDUQUE. presentacionPROYECTO INTEGRADOR ARCHIDUQUE. presentacion
PROYECTO INTEGRADOR ARCHIDUQUE. presentacionyorbravot123
 
Proyecto integrador Vereda Cujacal Centro.pptx
Proyecto integrador Vereda Cujacal Centro.pptxProyecto integrador Vereda Cujacal Centro.pptx
Proyecto integrador Vereda Cujacal Centro.pptxvanessaavasquez212
 
Creación WEB. Ideas clave para crear un sitio web
Creación WEB. Ideas clave para crear un sitio webCreación WEB. Ideas clave para crear un sitio web
Creación WEB. Ideas clave para crear un sitio webinformatica4
 
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia leeevalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia leeMaribelGaitanRamosRa
 
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...Monseespinoza6
 
Presentación Propuesta de Proyecto Social Colorido y Juvenil Multicolor y Neg...
Presentación Propuesta de Proyecto Social Colorido y Juvenil Multicolor y Neg...Presentación Propuesta de Proyecto Social Colorido y Juvenil Multicolor y Neg...
Presentación Propuesta de Proyecto Social Colorido y Juvenil Multicolor y Neg...crcamora123
 
Presentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos DigitalesPresentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos Digitalesnievesjiesc03
 
Fase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalFase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalYasneidyGonzalez
 
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNETPRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNETCESAR MIJAEL ESPINOZA SALAZAR
 
ensayo literario rios profundos jose maria ARGUEDAS
ensayo literario rios profundos jose maria ARGUEDASensayo literario rios profundos jose maria ARGUEDAS
ensayo literario rios profundos jose maria ARGUEDASAntoineMoltisanti
 
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdfAsistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdfDemetrio Ccesa Rayme
 
El fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docxEl fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docxAlejandrino Halire Ccahuana
 
Módulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptx
Módulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptxMódulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptx
Módulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptxPabloPazmio14
 
Portafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPNPortafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPNjmorales40
 

Último (20)

Ferias de ciencias y estrategia STEAM – PNFCyT 2024.pdf
Ferias de ciencias y estrategia STEAM – PNFCyT 2024.pdfFerias de ciencias y estrategia STEAM – PNFCyT 2024.pdf
Ferias de ciencias y estrategia STEAM – PNFCyT 2024.pdf
 
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdfUn libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
 
Poemas de Beatriz Giménez de Ory_trabajos de 6º
Poemas de Beatriz Giménez de Ory_trabajos de 6ºPoemas de Beatriz Giménez de Ory_trabajos de 6º
Poemas de Beatriz Giménez de Ory_trabajos de 6º
 
PROYECTO INTEGRADOR ARCHIDUQUE. presentacion
PROYECTO INTEGRADOR ARCHIDUQUE. presentacionPROYECTO INTEGRADOR ARCHIDUQUE. presentacion
PROYECTO INTEGRADOR ARCHIDUQUE. presentacion
 
Proyecto integrador Vereda Cujacal Centro.pptx
Proyecto integrador Vereda Cujacal Centro.pptxProyecto integrador Vereda Cujacal Centro.pptx
Proyecto integrador Vereda Cujacal Centro.pptx
 
Creación WEB. Ideas clave para crear un sitio web
Creación WEB. Ideas clave para crear un sitio webCreación WEB. Ideas clave para crear un sitio web
Creación WEB. Ideas clave para crear un sitio web
 
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia leeevalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
 
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
 
PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.
 
Presentación Propuesta de Proyecto Social Colorido y Juvenil Multicolor y Neg...
Presentación Propuesta de Proyecto Social Colorido y Juvenil Multicolor y Neg...Presentación Propuesta de Proyecto Social Colorido y Juvenil Multicolor y Neg...
Presentación Propuesta de Proyecto Social Colorido y Juvenil Multicolor y Neg...
 
Presentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos DigitalesPresentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos Digitales
 
Fase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalFase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcional
 
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNETPRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
 
ensayo literario rios profundos jose maria ARGUEDAS
ensayo literario rios profundos jose maria ARGUEDASensayo literario rios profundos jose maria ARGUEDAS
ensayo literario rios profundos jose maria ARGUEDAS
 
Sesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdfSesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdf
 
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdfAsistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
 
El fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docxEl fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docx
 
Sesión de clase: Luz desde el santuario.pdf
Sesión de clase: Luz desde el santuario.pdfSesión de clase: Luz desde el santuario.pdf
Sesión de clase: Luz desde el santuario.pdf
 
Módulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptx
Módulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptxMódulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptx
Módulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptx
 
Portafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPNPortafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPN
 

1 árbol

  • 2. Las estructuras dinámicas son las en la ejecución varia el número de elementos y uso de memoria a lo largo del programa) Entre estas tenemos: Lineales (listas enlazadas, pilas y colas) No lineales (arboles binarios y grafos o redes)
  • 3. ¿Qué es un Árbol? • Es una estructura de datos jerárquica. • La relación entre los elementos es de uno a muchos.
  • 4. Terminología • Nodo: Cada elemento en un árbol. • Nodo Raíz: Primer elemento agregado al árbol. B A D E H F K G C Nodo Raíz
  • 5. Más terminología • Nodo Padre: Se le llama así al nodo predecesor de un elemento. • Nodo Hijo: Es el nodo sucesor de un elemento. • Hermanos: Nodos que tienen el mismo nodo padre. B A D E H F K G C Nodo Padre F y G son Nodos Hijos de C F y G son hermanos
  • 6. Más terminología • Nodo Hoja: Aquel nodo que no tiene hijos. B A D E H F K G C D, H, F y K son Nodos Hojas
  • 7. Más terminología • Subárbol: Todos los nodos descendientes por la izquierda o derecha de un nodo. B A D E H F K G C Subárbol derecho de C Subárbol izquierdo de C
  • 8. Altura y Niveles Nivel 0 Nivel 1 Nivel 2 Nivel 3 Altura del árbol = 4 B A D E H F K G C La Altura es la cantidad de niveles.
  • 9. Árbol Binario de Búsqueda (ABB) • Este tipo de árbol permite almacenar información ordenada. • Reglas a cumplir: – Cada nodo del árbol puede tener 0, 1 ó 2 hijos. – Los descendientes izquierdos deben tener un valor menor al padre. – Los descendientes derechos deben tener un valor mayor al padre.
  • 10. Ejemplos de ABB… 13 21 5 18 15 25 40 36 33 21 30 32 43 41 33
  • 11. ¿Por qué no son ABB? 13 21 17 18 15 25 40 22 33 1 5 2 4 6
  • 12. Implementación de un ABB… class NodoArbol { public: int info; NodoArbol *izq, *der; NodoArbol( ); NodoArbol(int dato); }; NodoArbol(void) { izq = der = NULL; } NodoArbol(int dato) { info = dato; izq = der = NULL; }
  • 13. Continuación… class ABB { private: NodoArbol *raiz; public: ABB( ); // constructor ~ABB( ); // destructor //otros métodos };
  • 14. Proceso para buscar un nodo... 13 21 10 18 25 40 33 ¿El 25 es mayor o menor que el 21? Buscar el 25 13 21 10 18 25 40 33 ¿El 25 es mayor o menor que el 33? 13 21 10 18 25 40 33 Encontrad o Paso 1 Paso 2 Paso 3
  • 15. Implementación de la búsqueda ... p=raiz; while (p != NULL) { if (p->info == valor) return p; else p=(p->info > valor? p->izq: p->der); } return NULL; … P contiene la dirección del nodo que tiene el valor buscado No se encontró el valor por lo que se regresa un NULL Equivalente a: if ( p -> info > valor ) p = p -> izq; else p = p-> der;
  • 16. Proceso para agregar nodos... • Reglas: – El valor a insertar no existe en el árbol. – El nuevo nodo será un Nodo Hoja del árbol. • Procedimiento 1. Buscar el Nodo Padre del nodo a agregar. 2. Agregar el nodo hoja.
  • 17. Ejemplo 13 21 10 18 25 40 33 ¿El 26 es mayor o menor que el 21? Agregar el valor 26 13 21 10 18 25 40 33 ¿El 26 es mayor o menor que el 33? 13 21 10 18 25 40 33 Se encontró el Nodo Padre Paso 1 Paso 2 Paso 3 13 21 10 18 25 40 33 Agregar el nodo Paso 4 26
  • 18. Comentarios importantes.... • El orden de inserción de los datos, determina la forma del ABB. • ¿Qué pasará si se insertan los datos en forma ordenada? • La forma del ABB determina la eficiencia del proceso de búsqueda. • Entre menos altura tenga el ABB, más balanceado estará, y más eficiente será. 13 10 18 21 25 Este árbol está desbalanceado porque los valores se agregaron en el siguiente orden: 10, 13, 18, 21, 25, 33, 40
  • 19. bool ABB::Insertar(int valor) { NodoArbol *nuevo, *actual, *anterior; nuevo = new NodoArbol(valor); actual = raiz; anterior = NULL; while ( actual != NULL ) { if ( valor == actual -> info ) return 0; anterior = actual; actual = (actual->info > valor ? actual->izq : actual->der); } if(anterior==NULL) raiz=nuevo; else { if ( anterior -> info > valor ) anterior -> izq = nuevo; else anterior -> der = nuevo; } return 1; } Implementación.... Busca el Nodo Padre. Al final, Anterior será el padre del nuevo nodo. Agrega el nodo como nodo hoja. Si Anterior es igual a NULL quiere decir que el árbol está vacío por lo que el nodo a agregar será la raíz.
  • 20. Proceso para eliminar un nodo • Si el nodo a eliminar es un: – Nodo hoja • Buscar el Nodo Padre del nodo a borrar. • Desconectarlo. • Liberar el nodo. – Nodo con un hijo • Buscar el Nodo Padre del nodo a borrar. • Conectar el hijo con el padre del nodo a borrar. • Liberar el nodo. – Nodo con dos hijos • Localizar el nodo predecesor o sucesor del nodo a borrar. • Copiar la información. • Eliminar el predecesor o sucesor según sea el caso.
  • 21. Caso: Eliminar Nodo hoja 13 21 10 18 25 40 33 Nodo Padre localizado 13 21 10 18 25 40 33 Desconectarlo y liberar el nodo Paso 1 Paso 2 Eliminar el valor 25
  • 22. Caso: Eliminar Nodo con un hijo 13 21 10 18 25 40 33 Nodo Padre localizado 13 21 10 18 25 40 33 Conectar el Nodo Padre con el Nodo Hijo y liberar el nodo. Paso 1 Paso 2 Eliminar el valor 25 29 27 30 29 27 30
  • 23. Caso: Eliminar nodo con dos hijos 1. Localizar el nodo predecesor o sucesor del nodo a borrar. – El PREDECESOR es “el Mayor de los Menores”. – El SUCESOR es “el Menor de los Mayores”. – Para la implementación es igual de eficiente programar la búsqueda del predecesor que del sucesor. 1. El valor del Predecedor (o sucesor) se copia al nodo a borrar. 2. Eliminar el nodo del predecesor (o sucesor según sea el caso).
  • 24. Predecesor 13 21 10 25 40 33 29 27 30 El predecesor de: Es: 33 30 21 13 29 27 Uno a la IZQUIERDA y todo a la DERECHA
  • 25. Sucesor 13 21 10 18 25 40 33 29 27 30 El sucesor de: Es: 21 25 33 40 29 30 Uno a la DERECHA y todo a la IZQUIERDA
  • 26. Implementación del.... P = actual -> izq; while( p -> der != NULL) p=p->der; return p; P = actual -> der; While (p -> izq != NULL ) p=p->izq; return p; PREDECESOR SUCESOR actual apunta al nodo a borrar
  • 27. Caso: Eliminar Nodo con dos hijos 13 21 10 18 25 40 33 Localizar el valor a borrar Paso 1 Eliminar el valor 21 utilizando el predecesor 13 21 10 18 25 40 33 Localizar el Predecesor Paso 2 13 18 10 18 25 40 33 Copiar el valor del Predecesor al nodo que contenía el valor a borrar Paso 3 13 18 10 18 25 40 33 Desconectar y liberar el nodo del Predecesor Paso 4
  • 28. Eliminar el valor 21 utilizando el Sucesor Caso: Eliminar Nodo con dos hijos 13 21 10 18 25 40 33 Localizar el valor a borrar Paso 1 13 21 10 18 25 40 33 Localizar el Sucesor Paso 2 13 25 10 18 25 40 33 Copiar el valor del Sucesor al nodo que contenía el valor a borrar Paso 3 13 18 10 18 25 40 33 Desconectar y liberar el nodo del Sucesor Paso 4