Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int altura_nodo (nodo n, Arbol A)
- {
- int altura=0;
- if(n==NODO_NULO)
- return -1;
- else
- {
- if(HijoIzqdo(n,A)!=NODO_NULO)
- {
- altura=max(altura,1+altura_nodo(HijoIzqdo(n,A),A));
- n=HijoIzqdo(n,A);
- if(n!=NODO_NULO)
- {
- while(HermDrcho(n,A)!=NODO_NULO)
- {
- altura=max(altura,1+altura_nodo(HermDrcho(n,A),A));
- n=HermDrcho(n,A);
- }
- }
- }
- return altura;
- }
- }
- int DesequilibrioArbol (Arbol A)
- {
- Cola C;
- nodo n,hizqdo,hedrcho;
- int desequilibrio=0,alt_max=0,alt_min;
- if (ArbolVacio(A))
- return -1;
- else
- {
- n = Raiz(A);
- alt_min = altura_nodo (n,A);
- C = CrearCola();
- ColaPush(n,C);
- ColaPush(NODO_NULO,C);
- while (!ColaVacia(C))
- {
- n = ColaFrente(C);
- ColaPop(C);
- if (n == NODO_NULO)
- {
- desequilibrio = max(desequilibrio,alt_max - alt_min);
- if(!ColaVacia(C))
- {
- ColaPush(NODO_NULO,C);
- alt_max = 0;
- alt_min = altura_nodo(Raiz(A),A);
- }
- }
- else
- {
- alt_max = max(alt_max,altura_nodo(n,A));
- alt_min = min(alt_min,altura_nodo(n,A));
- hizqdo = HijoIzqdo(n,A);
- if(hizqdo != NODO_NULO)
- {
- ColaPush(hizqdo,C);
- hedrcho = HermDrcho(hizqdo,A);
- while (hedrcho != NODO_NULO)
- {
- ColaPush(hedrcho,C);
- hedrcho = HermDrcho(hedrcho,A);
- }
- }
- }
- }
- DestruirCola(C);
- return desequilibrio;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment