Gibt die Differenz zwischen dem niedrigsten und dem höchsten Schlüssel - binärer Suchbaum

stimmen
4

Dies ist eine Vergangenheit Prüfung Papier auf binäre Suche Bäumen, die ich versucht bin. Ich habe keine Möglichkeit zu überprüfen, ob die Ausgabe korrekt ist, wie ich bin nicht in der Lage eines dieser Dinge zu bauen.

Die Frage ist in dem 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;
    }
}

Könnte jemand vorschlagen , was muss ich 5/5 Noten zu bekommen ändern: D - das einzige , was wir tun müssen , ist die spanSchreibmethode wurde der Header für uns gegeben.

Veröffentlicht am 12/05/2010 um 16:55
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Sie müssen zwei Methoden definieren, min(Tree)und max(Tree)dann , span(Tree t)wie definiert max(t) - min(t). spanselbst sollte nicht rekursiv sein, aber Sie können machen minund maxrekursiv , wenn Sie wollen.

Beachten Sie, dass minund maxnicht haben ihre eigenen Methoden. Wenn Sie sich nicht für die Herstellung von ihnen kümmern stehen als ihre eigenen Einheiten, können Sie sie alle in setzen kann spanwie folgt aus :

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;
}
Beantwortet am 12/05/2010 um 17:21
quelle vom benutzer

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