Întoarcere diferența dintre cea mai mică și cea mai mare cheie - binar de căutare copac

voturi
4

Aceasta este o lucrare de examen trecut, pe arbori de căutare binare Eu încerc. Nu am nici o modalitate de a verifica dacă ieșirea este corectă, deoarece eu nu sunt capabil de a construi unul dintre aceste lucruri.

Întrebarea este în titlu

class Tree{
    Tree left;
    Tree right;
    int key;

   public static int span(Tree tree)
   {
        if ( tree == null ){
             return null;
        }

        if( tree.left != null)
             int min = span(tree.left);
         }

        if( tree.right != null){
             int max = span(tree.right);
         }
         return max - min;
    }
}

Ar putea cineva sugerează ceea ce am nevoie pentru a schimba pentru a obține 5/5 mărci: D - singurul lucru pe care trebuie să facem este scrie spanmetoda, antet a fost dat pentru noi.

Întrebat 12/05/2010 la 16:55
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
1

Trebuie să definiți două metode, min(Tree)și max(Tree), apoi span(Tree t)este definit ca max(t) - min(t). spanîn sine nu ar trebui să fie recursive, dar puteți face minși maxrecursiv dacă doriți.

Rețineți că minși maxnu trebuie să fie propriile lor metode. Dacă nu vă pasă de ceea ce le stau ca unități proprii, puteți pune totul în spanfelul următor:

int span(Tree t) {
   Tree tMin = t;
   while (tMin.left != null) {
      tMin = tMin.left;
   }

   Tree tMax = t;
   while (tMax.right != null) {
      tMax = tMax.right;
   }

   return tMax.key - tMin.key;
}
Publicat 12/05/2010 la 17:21
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more