Unidad 4. Árboles Binarios
Objetivo
Identificar las ventajas de emplear árboles binarios
Instrucciones
Revisar los videos de explicación de los árboles binarios de búsqueda
- ÁrbolesBinariosConsideraciones
- Recorridos
- Eliminación de nodos primera y segunda parte
- EjemploArbolBinario
Pueden revisar las diapositivas o emplearlas de base para su prueba de escritorio
Revisar el ejemplo arbolbin1.java donde vienen métodos de ejemplo
Ejemplo de un árbol que no es correcto, explicar porque en la sesión de revisión
Realizar los ejercicios:
- ALBERTO TOLENTINO, ANGEL M:
- Realizar la prueba de escritorio paso a paso de la eliminación del valor 20 (No implementado) y del recorrido inorden del subárbol derecho del árbol.
- Considerando un árbol binario, implementar un método que muestre cuantos nodos son nodos hojas y cuantos no.
- BENITEZ JUAREZ, MARCO A:
- Realizar la prueba de escritorio paso a paso de la búsqueda del valor 100 (No implementado) y del recorrido inorden del subárbol derecho del árbol.
- Considerando un árbol binario, implementar un método que muestre cuantos nodos no son nodos hojas.
- BLANCO ACOSTA, MANOLO E:
- Realizar la prueba de escritorio paso a paso de la inserción del valor 2 (No implementado) y del recorrido postorden del subárbol izquierdo del árbol.
- Considerando un árbol binario, implementar un método que muestre los nodos del subárbol derecho.
- CASTILLO GUZMAN, IAN YAEL:
- Realizar las pruebas de escritorio del recorrido en postorden del subárbol derecho del árbol binario y realizar la inserción paso a paso del nodo 43 (no implementado)
- Implementar un método que elimine las hojas de un árbol binario
- CRUZ VAZQUEZ, ERIK I.:
- Realizar las pruebas de escritorio del recorrido en postorden del subárbol derecho del árbol binario y realizar la inserción paso a paso del nodo 10 (no implementado)
- Implementar un método que elimine el primer nodo hoja de un árbol binario recorriendolo de izquierda a derecha
- FLORES SERRANO, JESUS ANTONIO
- Realizar las pruebas de escritorio paso a paso del recorrido en postorden de todo el árbol binario así como la búsqueda del nodo 2 (no implementado)
- Implementar un método que sume todos los datos pares de todos los nodos de un árbol binario de tipo entero
- GARATE CRUZ, SEBASTIAN D:
- Realizar la prueba de escritorio paso a paso de la eliminación del valor 14 (No implementado) y del recorrido inorden del subárbol izquierdo del árbol.
- Considerando un árbol binario, implementar un método que muestre los nodos del subárbol izquierdo.
- GARCIA MARTINEZ, LUIS ANTONIO:
- Realizar las pruebas de escritorio del recorrido en preorden del subárbol derecho del árbol binario y realizar la eliminación paso a paso del nodo 32 (no implementado)
- Implementar un método que respalde los valores de las hojas de un árbol binario en un arreglo
- LEZAMA CRUZ, JOSE M:
- Realizar las pruebas de escritorio paso a paso de la eliminación del nodo 14 en el siguiente árbol binario y del recorrido postorden de todo el árbol binario(no implementado)
- Implementar un método que cuente cuantos nodos de un árbol binario de caracteres no son son vocales considerando que tiene almacenados solo caracteres.
- LOPEZ VICENTE, WEYMAN N:
- Realizar la prueba de escritorio paso a paso de la búsqueda del valor 9 (No implementado) y del recorrido preorden del subárbol derecho del árbol.
- Considerando un árbol binario, implementar un método que muestre cuantos nodos son nodos intermedios del subárbol derecho
- MENDOZA HERNANDEZ, DANIEL:
- Realizar la prueba de escritorio paso a paso de la eliminación del valor 15 (No implementado) y del recorrido inorden del subárbol derecho del árbol.
- Considerando un árbol binario, implementar un método que muestre cuantos nodos son nodos hojas del subárbol izquierdo
- MORA CONTRERAS, CARLOS U:
- Realizar las pruebas de escritorio paso a paso del recorrido en postorden para el subgrafo izquierdo del siguiente árbol y de la búsqueda del nodo con valor 1 en el árbol binario completo (no implementado).
- Implementar un método que cuente cuantos nodos de un árbol binario de enteros son múltiplos de 3.
- OSIO CARMONA, FERNANDO D:
- PALENCIA VAZQUEZ, HUGO A. :
- Realizar las pruebas de escritorio paso a paso del recorrido en preorden del subárbol derecho del árbol binario y la inserción del nodo 52 (no implementado)
- Implementar un método que elimine todos los nodos hoja árbol binario de tipo entero
- PEREZ ARCE, GABRIELA:
- Realizar las pruebas de escritorio paso a paso de la eliminación del nodo 14 en el siguiente árbol binario y del recorrido inorden de todo el árbol binario(no implementado)
- Implementar un método que cuente cuantos nodos de un árbol binario de caracteres son vocales considerando que tiene almacenados solo caracteres.
- RAMIREZ LUIS, CESAR J:
- Realizar las pruebas de escritorio del recorrido en preorden del subárbol derecho del árbol binario y realizar la eliminación paso a paso del nodo 7 (no implementado)
- Implementar un método que elimine el primer nodo hoja de un árbol binario recorriendolo de izquierda a derecha
- RAMOS ROJAS, EMMANUEL:
- Realizar las pruebas de escritorio del recorrido en preorden del subárbol izquierdo del árbol binario y realizar la eliminación paso a paso del nodo 2 (no implementado)
- Implementar un método que elimine el primer nodo hoja del subárbol derecho de un árbol binario recorriendolo de izquierda a derecha
- RODRIGUEZ MARTINEZ, ADRIAN:
- Realizar las pruebas de escritorio paso a paso del recorrido en preorden para el subgrafo izquierdo del siguiente árbol y de la eliminación del nodo con valor 36 en el árbol binario completo (no implementado).
- Implementar un método que cuente cuantos nodos de un árbol binario de enteros son primos.
- ROMERO DE LA ROSA, ALEXIS
- Realizar las pruebas de escritorio paso a paso del recorrido inorden del subárbol derecho del árbol binario y la eliminación del nodo 55 (no implementado)
- Implementar un método que sume los datos de todos los nodos de la rama izquierda de un árbol binario de tipo entero
Árboles Binarios
ResponderEliminarMétodo:
int sumarNodos(Nodo* raiz) {
if (raiz == nullptr) {
return 0; // caso base: nodo vacío suma 0
}
// suma actual + suma subárbol izquierdo + suma subárbol derecho
return raiz->dato + sumarNodos(raiz->izquierdo) + sumarNodos(raiz->derecho);
}
Archivo completo:
https://drive.google.com/file/d/1WgVr1T66F95xiU7ZpQCs7pvW7tWFh4Pr/view?usp=sharing
//Metodo:
ResponderEliminarint eliminarHojas(tpuntero* raiz){
tpuntero actual=*raiz;
//Checa si el Nodo es una Hoja y vuelve a la llamada anterior
if(actual->izquierda==NULL&&actual->derecha==NULL){
return 1;
}
if(actual->izquierda!=NULL){
//Si el nodo izquierdo es una hoja lo libera
if(eliminarHojas(&actual->izquierda)){
printf("Nodo %d liberado.\n",actual->izquierda->v);
free(actual->izquierda);
actual->izquierda=NULL;
}
}
if(actual->derecha!=NULL){
//Si el nodo derecho es una hoja lo libera
if(eliminarHojas(&actual->derecha)){
printf("Nodo %d liberado.\n",actual->derecha->v);
free(actual->derecha);
actual->derecha=NULL;
}
}
//Como el nodo tiene hijos, devuelve negativo y vuelve a la llamada anterior
return 0;
}
Arboles Binarios:
https://drive.google.com/file/d/1YV5HRAx9Z13S-pvg42VAN5jYIaYnZcH0/view?usp=drive_link