Terugkeer van het verschil tussen de laagste en hoogste toets - Binary Search Tree

stemmen
4

Dit is een verleden examen papier op binaire zoekboom Ik probeer. Ik heb geen manier om te controleren of de uitgang juist is als ik ben niet in staat van het bouwen van een van deze dingen.

Het is de vraag in de titel

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 iemand suggereren wat ik moet veranderen om 5/5 merken krijgen: D - het enige wat we moeten doen is het schrijven van de spanmethode, werd de kop gegeven voor ons.

De vraag is gesteld op 12/05/2010 om 16:55
bron van user
In andere talen...                            


1 antwoorden

stemmen
1

Je moet twee methoden te definiëren, min(Tree)en max(Tree)vervolgens span(Tree t)wordt gedefinieerd als max(t) - min(t). spanzelf moet niet recursief zijn, maar u kunt maken minen maxrecursieve als je wilt.

Merk op dat minen maxniet hebben om hun eigen methoden. Als je niet voor het maken van schelen ze opvallen als hun eigen units, kunt u het allemaal in te zetten spanals volgt uit:

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;
}
antwoordde op 12/05/2010 om 17:21
bron van user

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