Necesito encontrar el índice de un elemento en std :: set. Este índice se puede visualizar como la distancia del iterador desde el principio. Una forma puede ser:distancia entre std :: set begin() y std :: set iterator en O (logn)
for(int i = 0, set<int>::iterator it = s.begin(); it != iteratorToBeFound; ++it, ++i);
Esto tiene claramente el tiempo O (n). Pero sabemos que la distancia desde la raíz en un árbol de búsqueda binaria implementado por el conjunto internamente se puede encontrar en O (log n) time.
¿Hay alguna manera de implementar lo mismo para encontrar el índice en el tiempo O (log n) en C++ establecido?
¿Por qué necesitaría el índice? – paulm
¿Estás seguro de que es posible encontrar la distancia en el tiempo 'O (log n)' en un árbol de búsqueda binario? 'set' es típicamente un árbol rojo-negro, que no tiene mucha información en cada nodo acerca de cuántos elementos hay en sus subárboles izquierdo y derecho, respectivamente. Recuerda que no estás buscando la distancia directamente desde la raíz, estás buscando el número total de hojas a la izquierda de la hoja que tienes. –
@SteveJessop: Ohh, ¿entonces no hay forma de que calculen el índice en O (logn) en el árbol R-B? – divanshu