Restituisce la differenza tra il più basso e più alto chiave - Binary Search Albero

voti
4

Si tratta di un esame di carta passato sugli alberi binari di ricerca che sto cercando. Non ho modo di verificare se l'uscita è corretta come io non sono in grado di costruire una di queste cose.

La domanda è nel titolo

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

Qualcuno potrebbe suggerire che cosa ho bisogno di cambiare per ottenere 5/5 marchi: D - l'unica cosa che dobbiamo fare è scrivere il spanmetodo, il colpo di testa viene dato per noi.

È pubblicato 12/05/2010 alle 16:55
fonte dall'utente
In altre lingue...                            


1 risposte

voti
1

È necessario definire due metodi, min(Tree)e max(Tree), quindi span(Tree t)è definita come max(t) - min(t). spandi per sé non dovrebbe essere ricorsiva, ma si può fare mine maxricorsivo, se si desidera.

Si noti che mine maxnon hanno di essere i propri metodi. Se non si cura per facendoli risaltare come le loro proprie unità, si può mettere tutto in spanquesto modo:

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;
}
Risposto il 12/05/2010 a 17:21
fonte dall'utente

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