Returner forskjellen mellom laveste og høyeste nøkkelen - binært søketre

stemmer
4

Dette er en tidligere eksamensoppgaven på binære søketrær jeg forsøker. Jeg har ingen mulighet til å sjekke om resultatet er riktig som jeg ikke er i stand til å bygge en av disse tingene.

Spørsmålet er i tittelen

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;
    }
}

Kan noen foreslå hva jeg trenger å endre for å få 5/5 merkene: D - det eneste vi trenger å gjøre er å skrive den spanmetoden, ble overskriften gitt for oss.

Publisert på 12/05/2010 klokken 15:55
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Du må definere to metoder, min(Tree)og max(Tree)deretter span(Tree t)er definert som max(t) - min(t). spani seg selv bør ikke være rekursiv, men du kan gjøre minog maxrekursiv hvis du vil.

Legg merke til at minog maxikke har til å være sine egne metoder. Hvis du ikke bryr seg for å gjøre dem stå som egne enheter, kan du sette det hele inn spansom dette:

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;
}
Svarte 12/05/2010 kl. 16:21
kilden bruker

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