Vrátit rozdíl mezi nejnižším a nejvyšším klíč - strom binárního vyhledávání

hlasů
4

To je minulost zkouška referát na binárních vyhledávacích stromech Snažím. Nemám žádný způsob, jak zjistit, jestli je výstup správný nejsem schopen stavět jednu z těchto věcí.

Otázkou je, v názvu

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

Mohl by někdo navrhnout to, co je třeba změnit, aby 5/5 značky: D - jediná věc, kterou musíme udělat, je napsat spanmetodu, hlavička byla udělena za námi.

Položena 12/05/2010 v 16:55
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
1

Musíte definovat dvě metody, min(Tree)a max(Tree)pak span(Tree t)je definován jako max(t) - min(t). spansamo o sobě by neměla být rekurzivní, ale můžete udělat mini maxrekurzivní, pokud chcete.

Všimněte si, že mini maxnemusí mít za své vlastní metody. Pokud nechcete starat o dělat je postavit jako své vlastní jednotky, můžete si dát to všechno do spantakto:

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;
}
Odpovězeno 12/05/2010 v 17:21
zdroj uživatelem

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