java πολυμορφικό δυαδικό δένδρο αναζήτησης

ψήφοι
0

Πώς μπορώ να εφαρμόσει ένα πολυμορφικό δυαδικό δέντρο αναζήτησης (που κάνει χρήση της EmptyTree και NonEmptyTree) χωρίς τη χρήση Downcasting ή κατηγορία έλεγχο;

Δημοσιεύθηκε 02/04/2010 στις 06:31
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

Δημιουργήστε μια κοινή διεπαφή, όπως:

interface TreeNode<K, V> {
   TreeNode<K, V> find(K key)
}

Στη συνέχεια, παρέχει μαθήματα που εφαρμόζουν την κοινή διεπαφή:

class EmptyTree<K, V> implements TreeNode<K, V> {
   public TreeNode<K, V> find(K key) {
      // ...
   }
}

class NonEmptyTree<K, V> implements TreeNode<K, V> {
   public TreeNode<K, V> find(K searchKey) {
      // ...
   }
}

την εφαρμογή σας για το EmptyTree θα δείξει πάντα μια αποτυχία στην αναζήτηση για το προϊόν (είτε επιστρέφοντας μηδενική ή ρίχνοντας μια εξαίρεση), ενώ η εφαρμογή σας NonEmptyTree θα είτε η ίδια επιστρέψουν (αν η προϋπόθεση αναζήτησης κλειδί αγώνες) ή να μεταβιβάσει προς τα αριστερά ή δεξιά υποδένδρων. Επειδή το αριστερό ή το δεξί υποδέντρο θα υπάρχουν πάντα (που θα είναι είτε ένα NonEmptyTree ή EmptyTree), η κατηγορία «NonEmptyTree» μπορεί απλά να αναφέρεται στα παιδιά της μέσω της κοινής διεπαφής και βασίζονται στο γεγονός ότι ο τύπος runtime θα κάνει το σωστό (έτσι δεν είναι απαραίτητο να κάνει οποιαδήποτε χύτευση ή το είδος ελέγχου των παιδιών για την εφαρμογή του αλγορίθμου).

Το μόνο μέρος όπου θα πρέπει να γνωρίζετε τον τύπο εκτέλεσης είναι όταν κατασκευάζουν τα παιδιά.

Απαντήθηκε 02/04/2010 στις 06:54
πηγή χρήστη

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