Jump to content

Altura de un árbol binario de forma iterativa


Recommended Posts

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 by EL_H4K
Link to comment
Share on other sites

  • 1 year later...

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...