java árbol de búsqueda binaria polimórfica

votos
0

¿Cómo puedo implementar un árbol binario de búsqueda polimórfico (que hace uso de EmptyTree y NonEmptyTree) sin necesidad de utilizar downcasting o una clase de cheques?

Publicado el 02/04/2010 a las 06:31
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Crear una interfaz común, tales como:

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

A continuación, proporcionar clases que implementan la interfaz común:

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

Su aplicación para la EmptyTree siempre indicará un fallo en la búsqueda del elemento (ya sea mediante la devolución de nulo o lanzando una excepción), mientras que su implementación de NonEmptyTree o bien volver en sí (si la búsqueda siempre partidos clave) o delegar a la izquierda oa subárboles derecho. Debido a que siempre existirá el subárbol izquierdo o derecho (O bien será un NonEmptyTree o un EmptyTree), la clase "NonEmptyTree" puede referirse simplemente a sus hijos a través de la interfaz común y se basan en el hecho de que el tipo de ejecución va a hacer lo correcto (lo que no es necesario hacer ninguna comprobación de fundición o el tipo de los niños en la implementación del algoritmo).

El único lugar donde se necesita saber el tipo de ejecución es cuando se construye los niños.

Respondida el 02/04/2010 a las 06:54
fuente por usuario

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