Para eliminar un nodo en el árbol binario, debemos buscar el nodo. Eso es posible en un mínimo de O (log N) y max O (N). Dependiendo del nodo, tenemos que reorganizar los punteros. ¿Cómo calculamos la complejidad del tiempo de eso?Cuál es la complejidad de tiempo de eliminar un nodo en un árbol binario
Respuesta
La mayor parte de la complejidad es la búsqueda del nodo. Una vez que se ha encontrado, siempre que se conserve el nodo principal, solo quedan unas pocas asignaciones más para eliminar el nodo. Entonces es un orden constante.
Eso depende de cómo se borre. La forma más común consiste en encontrar el sucesor del nodo y luego reemplazar el nodo con ese sucesor. Esto se puede hacer en O (h), donde h es la altura del árbol. En el peor de los casos, esto es O (n), pero en un árbol equilibrado es el caso más desfavorable O (lg n).
¿Dónde obtiene el "peor tiempo de búsqueda como max O (N)"? Eso nunca debería pasar en un BST. En el peor de los casos, debería ser max O (h) para búsqueda y eliminación, donde 'h' es la altura del árbol. Vea esto helpful article.
O (h) puede ser O (n) en un árbol patológicamente degenerado. – templatetypedef
Sí mejor la complejidad caso es O (log n) (cuando perfectamente equilibrado) y
peor de los casos la complejidad es O (n)
1 - 2 - 3 - 4
Pero el principal problema con la supresión BST (Hibbard Deletion) es que no es simétrico. Después de muchas inserciones y eliminaciones, BST pierde su equilibrio. Los investigadores demostraron que después de una cantidad suficientemente larga de insertar al azar y eliminar la altura del árbol se convierte en sqrt (n). entonces ahora cada operación (búsqueda, inserción, eliminación) tomará sqrt (n) tiempo que no es bueno en comparación con O (logn).
Esto es un problema abierto de larga duración (alrededor de 50 años) para una eliminación simétrica eficiente para BST. para árbol equilibrado garantizado, tenemos que usar RedBlack Tree etc.
- 1. Búsqueda recursiva de un nodo en un árbol no binario
- 2. Boost árbol de propiedades: Eliminar un nodo
- 3. ¿Cómo encontrar el primer ancestro común de un nodo en un árbol binario?
- 4. Cola de prioridad eliminar tiempo de complejidad
- 5. ¿Qué es un "nodo interno" en un árbol de búsqueda binario?
- 6. ¿Cuál es la complejidad de tiempo de LinkedList.getLast() en Java?
- 7. Equilibrio de un árbol binario (AVL)
- 8. ¿Cuál es la complejidad de tiempo de HashMap.containsKey() en java?
- 9. Atravesando un árbol binario recursivamente
- 10. Árbol binario del árbol general
- 11. ¿Cómo implementar un árbol binario?
- 12. ¿Cuál es la complejidad del tiempo de cruce de árboles?
- 13. ¿Cuál es la complejidad de tiempo de .NET list.sort()
- 14. ¿Cuál es la complejidad de tiempo de HTML DOM búsquedas
- 15. ¿Cuál es la complejidad de tiempo del método java.util.Collections.sort()?
- 16. ¿Cuál es la definición de la altura de un árbol?
- 17. Encontrar un bucle en un árbol binario
- 18. Cómo crear un árbol binario
- 19. ¿Cuál es la complejidad temporal de la iteración TreeSet?
- 20. ¿Cómo buscar un nodo en un árbol y devolverlo?
- 21. Imagen de espejo de un árbol binario
- 22. ¿Cuál es la complejidad del tiempo de iteración a través de un estándar :: set/std :: map?
- 23. Creando un diagrama de nodo de árbol
- 24. Complejidad del tiempo de un MD5sum incrustado de fuerza bruta
- 25. Complejidades de recorridos de árbol binario
- 26. ¿Cuál es la complejidad de concatenación de cuerdas balanceadas?
- 27. imprime un árbol binario en uno de sus lados
- 28. cálculo de tiempo complejidad de un algoritmo
- 29. ¿Se puede cruzar un árbol no binario en orden?
- 30. Recorrido de un árbol para encontrar un nodo
+1, Bonito y conciso. –