arbre de recherche binaire polymorphes java

voix
0

Comment puis-je mettre en place un arbre de recherche binaire polymorphes (qui utilise EmptyTree et NonEmptyTree) sans utiliser le contrôle de downcasting ou classe?

Créé 02/04/2010 à 06:31
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Créer une interface commune telle que:

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

Ensuite, donner des cours qui mettent en œuvre l'interface commune:

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) {
      // ...
   }
}

Votre mise en œuvre du EmptyTree toujours indiquer un échec dans la recherche de l'élément (que ce soit en retournant nul ou en lançant une exception), alors que votre mise en œuvre de NonEmptyTree sera soit lui-même revenir (si la correspondance de clé de recherche fourni) ou déléguer à gauche ou à droite. sous-arbres Parce que la gauche ou la sous-arbre droit existera toujours (il sera soit un NonEmptyTree ou un EmptyTree), la classe « NonEmptyTree » peut simplement se référer à ses enfants via l'interface commune et compter sur le fait que le type d'exécution va faire la bonne chose (il est donc pas nécessaire de faire une coulée ou le type de vérification des enfants dans la mise en œuvre de l'algorithme).

Le seul endroit où vous avez besoin de connaître le type d'exécution est lorsque vous construisez les enfants.

Créé 02/04/2010 à 06:54
source utilisateur

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