java polymorpher binärer Suchbaum

stimmen
0

Wie kann ich einen polymorphen binären Suchbaum implementieren (das macht den Einsatz von EmptyTree und NonEmptyTree) ohne Überprüfung oder Downcasting-Klasse?

Veröffentlicht am 02/04/2010 um 06:31
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Erstellen Sie eine gemeinsame Schnittstelle wie zum Beispiel:

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

Dann bieten Klassen, die die gemeinsame Schnittstelle implementieren:

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

Ihre Implementierung für die EmptyTree wird zeigen immer einen Fehler für das Element in der Suche (ob durch null zurückkehrt oder durch Auslösen einer Ausnahme), während die Umsetzung von NonEmptyTree entweder selbst zurück (wenn die bereitgestellten Suchtaste Ursachen) oder delegieren nach links oder rechts Teilbäume. Da die linke oder rechte Unterbaum immer existieren wird (es wird entweder eine NonEmptyTree oder eine EmptyTree sein), kann die „NonEmptyTree“ Klasse einfach über die gemeinsame Schnittstelle für ihre Kinder auf und verlassen sich auf die Tatsache, dass der Laufzeittyp wird das Richtige tun (so ist es nicht erforderlich, Gießen oder Typprüfung der Kinder bei der Umsetzung des Algorithmus zu tun).

Der einzige Ort, wo Sie brauchen, den Laufzeittyp ist zu wissen, wenn Sie die Kinder konstruieren.

Beantwortet am 02/04/2010 um 06:54
quelle vom benutzer

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