Acabo de terminar una entrevista de trabajo y estaba luchando con esta pregunta, que me parece una pregunta muy difícil para dar una entrevista de 15 minutos.Crear un árbol de búsqueda binaria equilibrada a partir de una secuencia de enteros
Escriba la siguiente pregunta: Escriba una función que genere un flujo de enteros (desordenados) y genere un árbol de búsqueda equilibrado. Ahora, no puede esperar a que finalice la entrada (es una secuencia), por lo que necesita equilibrar el árbol sobre la marcha.
Mi primera respuesta fue utilizar un árbol Rojo-Negro, que por supuesto hace el trabajo, pero tengo que suponer que no esperaban que implementara un árbol negro rojo en 15 minutos.
Entonces, ¿hay alguna solución simple para este problema que no conozco?
Gracias,
de Dave
¿Sabe algo sobre los enteros (que no sean el hecho de que no están clasificados)? ¿Se le permite construir el BST en respuesta a que alguien busque un elemento, o debe tener un BST disponible en todo momento? ¿Puedes construir múltiples BST diferentes, o solo tienes que construir uno? – templatetypedef
Bueno, tal vez podrías usar un árbol negro rojo bajo una interpretación bastante liberal de las reglas. Ya que 15 minutos no es mucho tiempo, si se te permite hacer algo tonto como usar contenedores y algoritmos STL, podrías simplemente crear un std :: map, luego insertar los objetos directamente en eso (pero debo admitir que esto es básicamente hacer trampa). – Mikola
La pregunta fue tal como aparece, no hay otras suposiciones sobre la entrada o el uso. Solo pensé que tal vez hay un algoritmo común para esto y simplemente no me doy cuenta. Al parecer, querían que implementara un árbol equilibrado tal como lo conozco. Buena suerte con eso. – Dave