No entender este árbol de búsqueda binaria (BST) algoritmo de ejemplo

votos
2

En el código de eliminación de aquí .

No entiendo el primer fragmento de código eliminación (en el que el nodo no tiene dos hijos).

Si el nodo que está siendo borrada tiene un padre y un hijo en sí mismo (es decir, el nodo tiene un niño), ¿cómo funciona?

El código es simplemente eliminando el nodo y no establecer indicadores de los padres para el niño ahora huérfanos.

¿Me estoy perdiendo de algo?

Publicado el 12/04/2011 a las 20:58
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Puedo estar equivocado, pero el código en el sitio referenciado parece bien. Yo no lo he probado, sin embargo.

Esto es cierto, ya que la función de eliminación toma un argumento que es de tipo BSTNode ** nodo. Este no es un puntero al nodo. Este es un puntero a puntero del nodo del padre para el propio nodo . Esto podría ser un poco descuidado, pero tengo que admitir que después de darse cuenta de lo que hace el código, es una elegante solución en su camino. Así que al reescribir (* nodo), que no está reescribiendo el nodo en sí , en lugar que está reescribiendo del padre del nodo puntero al nodo . Efectivamente el código está haciendo lo que usted sugiere de una manera ligeramente pervertida: D. Espero que entendió lo que quería decir y espero que lo hizo bien.

También recomendaría que lea más acerca de los árboles rojo-negro, ya que este artículo da una idea única para crear el árbol, pero la estructura descrita no tiene límites asintóticos para su altura. Si, por ejemplo, se presiona valores ordenados en esta estructura, será una lista conectada en lugar de un árbol de equilibrado.


Respondida el 12/04/2011 a las 21:25
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more