java polimorfik ikili arama ağacı

oy
0

Nasıl bir polimorfik ikili arama ağacı uygulayabilir downcasting veya sınıf denetimini kullanmadan (yani EmptyTree ve NonEmptyTree yararlanır)?

Oluştur 02/04/2010 saat 06:31
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
1

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.

Cevap 02/04/2010 saat 06:54
kaynak kullanıcı

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