Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pila_t* iter_rangos(const abb_t* arbol, char* desde, char* hasta){
- pila_t* pila = pila_crear();
- if(!pila) return NULL;
- pila_t* pila_aux = pila_crear();
- if(!pila_aux){
- pila_destruir(pila);
- return NULL;
- }
- _iter_rangos(arbol, pila, arbol -> raiz, desde, hasta);
- while(!pila_esta_vacia(pila)){
- pila_apilar(pila_aux, pila_desapilar(pila));
- }
- pila_destruir(pila);
- return pila_aux;
- }
- bool _iter_rangos(const abb_t* arbol, pila_t* pila, nodo_abb_t* nodo, char* desde, char* hasta){
- if (!nodo){
- return true;
- }
- if (arbol->cmp(nodo->clave, desde) >= 0){
- if(!_iter_rangos(arbol, pila, nodo->izq, desde, hasta)) return false;
- }
- if (arbol->cmp(nodo->clave, desde) >= 0 && arbol->cmp(nodo->clave, hasta) <= 0){
- if(!pila_apilar(pila, nodo->clave)) return false;
- }
- if(arbol->cmp(nodo->clave, hasta) > 0){
- return false;
- }
- if(!_iter_rangos(arbol, pila, nodo->der, desde, hasta)) return false;
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement