java polimorfico albero binario di ricerca

voti
0

Come posso implementare un polimorfico albero binario di ricerca (che fa uso di EmptyTree e NonEmptyTree) senza usare downcasting o classe di controllo?

È pubblicato 02/04/2010 alle 06:31
fonte dall'utente
In altre lingue...                            


1 risposte

voti
1

Creare un'interfaccia comune come ad esempio:

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

Quindi fornire classi che implementano l'interfaccia comune:

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

L'implementazione per l'EmptyTree sarà sempre indicare un errore nella ricerca per la voce (sia con il ritorno nullo o lanciando un'eccezione), mentre l'implementazione di NonEmptyTree sarà o si tornare (se la ricerca fornita partite chiave) o delegare a sinistra oa sottostrutture destra. A causa della sottostruttura a sinistra oa destra esisterà sempre (lo farà essere un NonEmptyTree o un EmptyTree), la classe "NonEmptyTree" può semplicemente fare riferimento ai suoi figli attraverso l'interfaccia comune e fare affidamento sul fatto che il tipo di runtime farà la cosa giusta (quindi non è necessario fare qualsiasi fusione o il controllo di tipo dei bambini nella realizzazione dell'algoritmo).

L'unico posto in cui è necessario conoscere il tipo di esecuzione è quando si costruisce i bambini.

Risposto il 02/04/2010 a 06:54
fonte dall'utente

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