EL_H4K Posted October 11, 2010 Report Share Posted October 11, 2010 (edited) Hola saludos, saben, ando buscando el algoritmo pa calcular la altura de un arbol binario pero de forma iterativa. Recursiva es re fácil, pero necesito la iterativa :S Esta es la recursiva: int altura(AVL *a){ if(a) return (max(altura(a->izq),altura(a->der))+1); return(-1); } Se me ocurre que la iterativa podría hacerla usando una cola y un while o dos, pero si me pudieran ayudar pasándome el código me ahorrarían la paja de pensarlo xD Gracias de antemano :D Edit: Hace un rato me puse a programarla y la hice así: Edit 2: Ya, me está funcionando, pero la altura del padre no siempre queda bien, acá les dejo lo que hice: iint altura(AVL *a){ PILA *p=NULL; PILA *q=NULL; AVL *buff=NULL; buff=(AVL*)malloc(sizeof(AVL)); buff->izq=NULL; buff->der=NULL; int cont=-1, max; //contamos el largo de todas las ramas y guardamos el valor en una pila do{ while(a){ push(&p,a); a=a->izq; cont++; } a=pop(&p); buff->data=cont; push(&q,buff); while(a){ if(a->der) { a=a->der; cont++; break; } else{ a=pop(&p); cont--; } } }while(a); //ahora vemos cual de esos valores es el mayor max=0; while(q){ buff=pop(&q); if(max>buff->data) max=buff->data; }; return max; } Edit 3: Creo que ahí quedó, no estoy seguro que funcione perfecto en todos los casos, espero que si, y si alguien tiene una más cortita sería genial que me la dejara, grax :D Edited February 12, 2011 by EL_H4K Link to comment Share on other sites More sharing options...
Ra Posted October 13, 2010 Report Share Posted October 13, 2010 Lo movemos a centro de recursos. Gracias por el aporte. Link to comment Share on other sites More sharing options...
Unlikelihood Posted June 20, 2012 Report Share Posted June 20, 2012 men la solucion de arboles iterativa es casi nula - o inexistente. el que lo resuelva siempre le ponen un 7 y aprueba el ramo pk es asi de jodida.. ahi vi que sakaste los elementos del arbol,en general dejala recursiva que es la forma por exelencia de solucionar problemas de esa indole, y tampoco va aqui el hilo, va directamente en programacion D: estructuras de dato tda Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now