java polimorfă arbore binar de căutare

voturi
0

Cum pot pune în aplicare un arbore polimorfă binar de căutare (care face uz de EmptyTree și NonEmptyTree) fără a utiliza downcasting sau clasă de verificare?

Întrebat 02/04/2010 la 06:31
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
1

Crearea unei interfețe comune, cum ar fi:

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

Apoi, oferă clase care implementează interfața comună:

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

implementarea pentru EmptyTree va indica întotdeauna un eșec în căutarea pentru elementul (fie prin returnarea nul sau prin aruncarea unei excepții), în timp ce implementarea de NonEmptyTree se va întoarce fie (în cazul în căutare furnizate meciurile-cheie) sau de a delega la stânga sau subarbori dreapta. Deoarece subarbore stânga sau dreapta va exista întotdeauna (acesta va fi fie un NonEmptyTree sau un EmptyTree), clasa „NonEmptyTree“ se poate referi doar la copiii săi prin intermediul interfeței comune și se bazează pe faptul că tipul de execuție va face ceea ce trebuie (prin urmare, nu este necesar de a face orice tip de turnare sau de verificare a copiilor în punerea în aplicare a algoritmului).

Singurul loc unde trebuie să știți tipul de execuție este atunci când construi copii.

Publicat 02/04/2010 la 06:54
sursa de către utilizator

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