



Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
El proceso de borrado en un árbol binario de búsqueda (bst). El algoritmo se basa en encontrar el nodo predecesor, eliminarlo y actualizar los punteros de los nodos vecinos. Se detalla el método remove(key, node) y se presenta un ejemplo de borrado de un nodo con clave 5. El documento puede ser útil para estudiantes de informática o ciencias de la computación que estén estudiando datos y estructuras de datos, especialmente árboles binarios de búsqueda.
Tipo: Apuntes
1 / 5
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!




public void remove(K key) {
if (root == null) { System. out.println("Cannot remove: The tree is empty"); return; } root = BSTNode. remove(key, root);
}
private BSTNode<K, E> remove(K key, BSTNode<K, E> node) { if (node == null) { System. out .println("Cannot remove: The key doesn't exist"); return null; } if (key.equals(node.key)) { // Localizado el nodo a borrar // Es un nodo hoja if (!node.hasLeft() && !node.hasRight()) { return null; } // El hijo izquierdo está vacío if (!node.hasLeft()) { node.right.parent = node.parent; return node.right; } // El hijo derecho está vacío if (!node.hasRight()) { node.left.parent = node.parent; return node.left; } // Ninguno de los hijos está vacío
….. Continua en siguiente trasparencia……
Se cambia el puntero del nodo Hijo del que queremos borrar para que apunte al Padre del que queremos borrar
Se cambia el puntero del nodo Hijo del que queremos borrar para que apunte al Padre del que queremos borrar
No cambia el puntero de los Hijos del nodo que queremos borrar porque no tiene hijos
No tiene hijos el nodo a borrar
Solo tiene un hijo el nodo a borrar
Paso 1
Paso 2
Nodo 5 localizado. Tiene 2 hijos. Se busca el nodo predecesor (mayor izquierda)
Nodo eliminar
ramaIzq ramaDer mayorIzq
ramaDer MayorIzq
Se cambian los punteros de mayorIzq y ramaDer
Se elimina el nodo mayorIzq del subarbol ramaIzq
La llamada recursiva devuelve el nodo mayorIzq y se cambia el puntero hijo del nodo del Paso 1