Estoy escribiendo una función que se entera de que el número total de elementos en un árbol AVL por rango. Por ejemplo, los argumentos que ha pasado es ab y au, entonces tienen que saber cuántos artículos que están en un árbol AVL es en ese intervalo.
Actualmente mi forma de hacer esto es para recorrer el árbol cada vez que el cliente lo llama. Pero debido a que el número de artículos en mi es un árbol AVL varían grande, se necesita siempre si el cliente llama a esta función demasiadas veces. ¿Hay una manera más rápida de hacer eso?
Mi función range:
void range(AvlTree T, char* k1, char* k2) {
if ( T == NULL )
return;
if ( strcmp(k1, T->Element) < 0 )
range(T->Left, k1, k2);
if ( strcmp(k1, T->Element) <= 0 && strcmp(k2, T->Element) >= 0 )
total++;
if ( strcmp(k2, T->Element) > 0 )
range(T->Right, k1, k2);
}