Cómo se puede convertir a binario árbol de búsqueda binaria Árbol con O (1) espacio adicional?
árbol binario de búsqueda binaria árbol (BST)
Conversión de un árbol binario no ordenada en un árbol binario de búsqueda ordenada es trivial, pero un poco más difícil de hacer rápido.
He aquí una aplicación ingenua que deben satisfacer los criterios, no voy a describir los pasos reales para tomar, sólo el algoritmo general.
- Coge un nodo hoja azar de tu árbol existente
- Desvincular el nudo de la hoja de su árbol existente
- Hacer que el nodo de la raíz de su nuevo árbol de búsqueda binaria
- Coge otro nodo hoja azar de tu árbol existente
- Desvincular ese nodo de su árbol existente
- Encontrar el lugar adecuado para, y enlazar el nodo, en su nuevo árbol de búsqueda binaria
- Repita el paso 4-6 hasta que el árbol original está vacía
Usted debe requerir sólo unas pocas variables, como el padre del nodo hoja que está desvinculando (a menos que los nodos tiene padres-links), el nodo raíz del nuevo árbol, y un par de variables temporales, todo dentro de su O (1 ) criterios espaciales.
Esto no va a producir un árbol de búsqueda binaria óptima. Para que usted necesita ya sea a ordenar los nodos antes de añadirlos, y la adición de ellos en el orden correcto, o utilice un árbol binario de búsqueda de equilibrio, como un árbol rojo-negro o un árbol biselado.
fuente por usuario Lasse Vågsæther Karlsen
Convertir Binary Tree a un lista- doblemente enlazada se puede hacer in situ en O (n) luego clasificarla utilizando ordenamiento por mezcla, nlogn Convertir la lista de nuevo a un árbol - O (n)
nlogn solución simple.













