Retour la différence entre la plus basse et la plus élevée clé - binaire arbre de recherche

voix
4

Ceci est un document d'examen passé sur les arbres binaires de recherche je tente. Je n'ai aucun moyen de vérifier si la sortie est correcte car je ne suis pas capable de construire une de ces choses.

La question est dans le titre

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

Quelqu'un pourrait - il suggérer ce que je dois changer pour obtenir 5/5 points: D - la seule chose que nous devons faire est d' écrire la spanméthode, l' en- tête a été donné pour nous.

Créé 12/05/2010 à 16:55
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Vous devez définir deux méthodes, min(Tree)et max(Tree)puis span(Tree t)est défini comme max(t) - min(t). spanlui - même ne devrait pas être récursive, mais vous pouvez faire minet maxrécursive si vous voulez.

Notez que minet maxne pas avoir à être leurs propres méthodes. Si vous faites tout en fichez pour les faire tenir leurs propres unités, vous pouvez le mettre spancomme ceci:

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;
}
Créé 12/05/2010 à 17:21
source utilisateur

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