Επιστρέψτε τη διαφορά μεταξύ της χαμηλότερης και υψηλότερης κλειδί - Δυαδική Αναζήτηση Tree

ψήφοι
4

Αυτό είναι ένα παρελθόν χαρτί εξετάσεις σε δυαδικά δέντρα αναζήτησης Είμαι προσπαθεί. Δεν έχω κανένα τρόπο να ελέγξει αν το αποτέλεσμα είναι σωστό, όπως δεν είμαι σε θέση να κτιρίου ένα από αυτά τα πράγματα.

Το ερώτημα είναι στον τίτλο

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

Θα μπορούσε κανείς να προτείνει τι πρέπει να αλλάξει για να πάρει 5/5 σήματα: D - το μόνο πράγμα που πρέπει να κάνετε είναι να γράψετε τη spanμέθοδο, η επικεφαλίδα δόθηκε για μας.

Δημοσιεύθηκε 12/05/2010 στις 16:55
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

Θα πρέπει να ορίσετε δύο μεθόδους, min(Tree)και max(Tree), στη συνέχεια, span(Tree t)ορίζεται ως max(t) - min(t). spanαπό μόνη της δεν θα πρέπει να είναι αναδρομική, αλλά μπορείτε να κάνετε minκαι maxαναδρομικών, αν θέλετε.

Σημειώστε ότι minκαι maxδεν πρέπει να είναι δικές τους μεθόδους. Αν δεν σας νοιάζει για την κατασκευή τους στέκονται ως δικές τους μονάδες, μπορείτε να τα βάλετε σε spanκάπως έτσι:

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;
}
Απαντήθηκε 12/05/2010 στις 17:21
πηγή χρήστη

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