Don't like ads? PRO users don't see any ads ;-)

2 - nov 2010

By: bladecire on May 6th, 2012  |  syntax: None  |  size: 0.91 KB  |  hits: 47  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. //Arbre d'altures
  2.  
  3. /* Considereu un arbre binari a de qualsevol tipus. Diem que l'arbre d'altures d'a és un altre arbre binari a_alt amb la mateixa forma que a, on cada element és l'altura del subarbre d'a que té com a arrel el corresponent de l'esmentat element.
  4.  
  5. Arbre<int> arbre_alt (Arbre<int> &a){
  6. /*PRE: cert */
  7. /*Post: el resultat és un arbre amb la mateixa forma que a, on cada element és l'altura del subarbre d'a que té com a arrel el corresponent de l'esmentat element */
  8.  
  9.         Arbre<int> b;
  10.        
  11.         if(not a.es_buit()){
  12.                 Arbre<int> a1,a2;
  13.                 int alt = altura(a);
  14.                 a.fills(a1,a2);
  15.                 Arbre<int> b1,b2;
  16.                 b1 = arbre_alt(a1);
  17.                 b2 = arbre_alt(a2);
  18.                 b.plantar(alt,b1,b2);
  19.         }
  20. return b;
  21. }
  22.  
  23. int altura(Arbre<int>& a){
  24. int alt;
  25. if(a.es_buit()) alt = 0;
  26.         else{
  27.                 Arbre<int> a1,a2;
  28.                 a.fills(a1,a2);
  29.                 int x = altura(a1);
  30.                 int y = altura(a2);
  31.                 if(x>y) alt = x;
  32.                 else alt = y;
  33.         }
  34. return alt;
  35. }