alonsosjumper

Desequilibrio árbol general

Jun 7th, 2011
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. int altura_nodo (nodo n, Arbol A)
  2. {
  3. int altura=0;
  4.  
  5. if(n==NODO_NULO)
  6. return -1;
  7. else
  8. {
  9. if(HijoIzqdo(n,A)!=NODO_NULO)
  10. {
  11. altura=max(altura,1+altura_nodo(HijoIzqdo(n,A),A));
  12. n=HijoIzqdo(n,A);
  13.  
  14. if(n!=NODO_NULO)
  15. {
  16. while(HermDrcho(n,A)!=NODO_NULO)
  17. {
  18. altura=max(altura,1+altura_nodo(HermDrcho(n,A),A));
  19. n=HermDrcho(n,A);
  20. }
  21. }
  22. }
  23.  
  24. return altura;
  25. }
  26. }
  27.  
  28. int DesequilibrioArbol (Arbol A)
  29. {
  30. Cola C;
  31. nodo n,hizqdo,hedrcho;
  32. int desequilibrio=0,alt_max=0,alt_min;
  33.  
  34. if (ArbolVacio(A))
  35. return -1;
  36.  
  37. else
  38. {
  39. n = Raiz(A);
  40. alt_min = altura_nodo (n,A);
  41. C = CrearCola();
  42. ColaPush(n,C);
  43. ColaPush(NODO_NULO,C);
  44. while (!ColaVacia(C))
  45. {
  46. n = ColaFrente(C);
  47. ColaPop(C);
  48. if (n == NODO_NULO)
  49. {
  50. desequilibrio = max(desequilibrio,alt_max - alt_min);
  51. if(!ColaVacia(C))
  52. {
  53. ColaPush(NODO_NULO,C);
  54. alt_max = 0;
  55. alt_min = altura_nodo(Raiz(A),A);
  56. }
  57. }
  58. else
  59. {
  60. alt_max = max(alt_max,altura_nodo(n,A));
  61. alt_min = min(alt_min,altura_nodo(n,A));
  62. hizqdo = HijoIzqdo(n,A);
  63. if(hizqdo != NODO_NULO)
  64. {
  65. ColaPush(hizqdo,C);
  66. hedrcho = HermDrcho(hizqdo,A);
  67. while (hedrcho != NODO_NULO)
  68. {
  69. ColaPush(hedrcho,C);
  70. hedrcho = HermDrcho(hedrcho,A);
  71. }
  72. }
  73. }
  74. }
  75. DestruirCola(C);
  76. return desequilibrio;
  77. }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment