Nasıl bir polimorfik ikili arama ağacı uygulayabilir downcasting veya sınıf denetimini kullanmadan (yani EmptyTree ve NonEmptyTree yararlanır)?
java polimorfik ikili arama ağacı
ortak bir arayüz gibi oluşturun:
interface TreeNode<K, V> {
TreeNode<K, V> find(K key)
}
Sonra ortak bir arabirim sınıfları sağlar:
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) {
// ...
}
}
NonEmptyTree sizin uygulanması kendisini dönmek (verilen arama anahtar maçlar ise) veya sola temsilci veya olacak ya da EmptyTree İçin uygulanması, (boş dönerek veya bir istisna atarak olsun) madde ararken bir hata gösterdiğini daima olacaktır doğru altağaçlara. Sol veya sağ alt ağaç her zaman var olacaktır, çünkü "NonEmptyTree" sınıfı basitçe ortak arayüz üzerinden kendi çocuklarına bakın ve zamanı tür doğru olanı yapmak gerçeğine güvenebilirsiniz (bir NonEmptyTree veya EmptyTree olmak ya olacak) (böylece algoritmanın uygulanması çocukların herhangi döküm veya tip denetimi yapmak için gerekli değildir).
Çocuk oluşturmak zaman, çalışma zamanı tür bilmek gerekir tek yerdir.













