Esta pregunta es de un examen que tuve, y no pude resolverlo y quería ver cuál es la respuesta (esto no es tarea, ya que no me ayudará en nada más que conocimiento).Estructuras de datos pregunta
Necesitamos crear una estructura de datos para contener elementos cuyas claves son números reales.
La estructura de datos debe tener estas funciones:
Build (s, array): construye la estructura de datos S con n elementos en O (n)
Insert (S, K) y eliminar (S, x) en O (lgn) (k es un elemento, x es un puntero a él en la estructura de datos)
Delete-Minimal-Positive (S): elimina el elemento con la clave positiva mínima
Modo (S): devuelve la clave más frecuente en S en O (1)
Ahora, construir en O (n) generalmente significa que debe usarse un montón, pero eso no permite encontrar frecuencias. No pude encontrar ninguna manera de hacer esto. Lo mejor que se me ocurre es construir un Árbol Rojo-Negro (O (nlgn)) que se utilizará para construir un montón de frecuencia.
Me muero por saber la respuesta ...
Gracias!
No debería 'build' tomar los elementos como argumentos? – Svante
En los requisitos, no menciona la búsqueda de frecuencias, excepto la más frecuente. Entonces, un montón binario es bastante parecido a lo que quieres. –
@ Nick - muy cerca, pero no puro :) –