2010-05-12 23 views
4

Il s'agit d'un document d'examen sur les arbres de recherche binaire que je suis en train d'essayer. 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.Renvoie la différence entre la clé la plus basse et la plus haute - Arbre de recherche binaire

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 méthode span, l'en-tête était donné pour nous.

+1

... ajouter la balise devoirs si elle est devoirs. – naiad

+1

Votre attitude serait un bon point de départ. Faites vos devoirs, ou choisissez quelque chose d'autre à étudier. – Justin

+1

C'était clairement déplacé. Il a évidemment fait une tentative et demande ce qui pourrait être amélioré. C'est une question intéressante et un bon exercice de récursivité. Je ne vois aucune mauvaise attitude dans son message. – aioobe

Répondre

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). span lui-même ne devrait pas être récursif, mais vous pouvez faire min et max récursive si vous le souhaitez.

Notez que min et max n'ont pas ont pour être leurs propres méthodes. Si vous ne vous inquiétez pas pour les faire tenir leurs propres unités, vous pouvez mettre tout en span comme 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; 
} 
+0

je pense que c'est le meilleur approche comme un module d'algorithmes, ils peuvent désapprouver l'utilisation de méthodes de bibliothèque, serait-il possible de le faire en une seule méthode? ils ont seulement donné la méthode d'envergure en standard, je ne vois pas là un problème avec faire plus de méthodes mais ne voudrait pas le hasarder si possible – stan

+0

Vous pouvez le faire dans une méthode récursive de méthode, mais vous devez enregistrer la soustraction réelle au point à laquelle vous avez compris le min de l'arbre entier, et max de l'arbre entier. Voir ma réponse éditée abover. – aioobe

+0

@stan, de sorte que la définition de "plus bas" et "le plus haut" clés sont les clés "le plus à gauche" et "le plus à droite" ?? – aioobe