java polimorficzny binarne drzewo poszukiwań

głosy
0

W jaki sposób można wdrożyć polimorficzny binarne drzewo poszukiwań (sprawia, że ​​korzystanie z EmptyTree i NonEmptyTree) bez użycia rzutowanie w dół lub klasy sprawdzanie?

Utwórz 02/04/2010 o 06:31
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
1

Tworzenie wspólnego interfejsu, takich jak:

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

Następnie dostarczyć klas, które implementują wspólny interfejs:

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

Implementacja dla EmptyTree zawsze będzie oznaczać awarię w poszukiwaniu elementu (czy to przez zwrócenie null lub rzucając wyjątek), podczas gdy Twój realizacja NonEmptyTree albo powróci się (jeśli przewidziane wyszukiwania kluczowe mecze) lub przekazać w lewo lub prawego poddrzewa. Ponieważ w lewo lub w prawo subtree zawsze istnieje (to będzie albo do NonEmptyTree lub EmptyTree) klasa „NonEmptyTree” może po prostu odwołać się do swoich dzieci poprzez wspólny interfejs i powoływać się na fakt, że typ Runtime zrobi dobry uczynek (a więc nie ma potrzeby robić żadnych rozstrzygający lub typ kontroli nad dziećmi w realizacji algorytmu).

Jedyne miejsce, gdzie trzeba znać typ wykonania jest podczas konstruowania dzieci.

Odpowiedział 02/04/2010 o 06:54
źródło użytkownik

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