java polymorfe binaire zoekboom

stemmen
0

Hoe kan ik de uitvoering van een polymorfe binaire zoekboom (die gebruik maken van EmptyTree en NonEmptyTree maakt) zonder gebruik te maken downcasting of klasse controle?

De vraag is gesteld op 02/04/2010 om 06:31
bron van user
In andere talen...                            


1 antwoorden

stemmen
1

Maak een gemeenschappelijke interface, zoals:

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

Dan bieden klassen die de gemeenschappelijke interface uit te voeren:

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

Uw implementatie voor de EmptyTree zal altijd wijzen op een storing in het zoeken naar het item (of door terug te keren null of door het gooien van een uitzondering), terwijl de uitvoering van NonEmptyTree ofwel zich terug te keren (indien de verstrekte zoeksleutel wedstrijden) of delegeren naar links of rechts substructuren. Omdat de linker of rechter deelboom altijd zal bestaan ​​(het zal ofwel een NonEmptyTree of een EmptyTree), de "NonEmptyTree" klasse gewoon verwijzen naar haar kinderen via de gemeenschappelijke interface en vertrouwen op het feit dat de runtime-het juiste ding zal doen (dus is het niet nodig om gieten of typecontrole van de kinderen in de uitvoering van het algoritme).

De enige plek waar je moet weten de runtime type is als je de kinderen te bouwen.

antwoordde op 02/04/2010 om 06:54
bron van user

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