Hogyan végre egy polimorf bináris keresési fa (amely alkalmazza a EmptyTree és NonEmptyTree) használata nélkül downcasting vagy osztály ellenőrzése?
java polimorf bináris keresési fa
Hozzon létre egy közös felületet, mint:
interface TreeNode<K, V> {
TreeNode<K, V> find(K key)
}
Ezután adja osztályok, amelyek megfelelnek a közös interfész:
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) {
// ...
}
}
A végrehajtás az EmptyTree mindig jelzi a hiba keresésében elem (akár visszatérő null vagy kivételt dob), míg a végrehajtása NonEmptyTree akkor sem tér vissza magát (ha a biztosított keresési kulcs mérkőzést), vagy átruházhatja a bal vagy a jobb részfa. Mivel a bal vagy a jobb részfa mindig létezik (akkor sem lehet NonEmptyTree vagy EmptyTree), a „NonEmptyTree” osztályú egyszerűen utal az a gyerekek a közös interfészen keresztül, és azon a tényen alapul, hogy a futási típus a helyes dolgot (így nem szükséges, hogy nem minden öntés vagy típusellenőrzés a gyerekek a végrehajtása az algoritmus).
Az egyetlen hely, ahol meg kell tudni, hogy a futási típus az, amikor megépíteni a gyerekek.













