java多态二叉搜索树

java多态二叉搜索树,java,polymorphism,binary-search-tree,Java,Polymorphism,Binary Search Tree,如何在不使用向下转换或类检查的情况下实现多态二叉搜索树(使用EmptyTree和NoneptyTree)?创建一个公共接口,例如: interface TreeNode<K, V> { TreeNode<K, V> find(K key) } 接口树节点{ 树节点查找(K键) } 然后提供实现公共接口的类: class EmptyTree<K, V> implements TreeNode<K, V> { public TreeNo

如何在不使用向下转换或类检查的情况下实现多态二叉搜索树(使用EmptyTree和NoneptyTree)?

创建一个公共接口,例如:

interface TreeNode<K, V> {
   TreeNode<K, V> find(K key)
}
接口树节点{
树节点查找(K键)
}
然后提供实现公共接口的类:

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) {
      // ...
   }
}
类EmptyTree实现TreeNode{
公共树节点查找(K键){
// ...
}
}
类NoneEmptyTree实现TreeNode{
公共树节点查找(K searchKey){
// ...
}
}
EmptyTree的实现将始终指示搜索项失败(无论是返回null还是引发异常),而非EmptyTree的实现将返回自身(如果提供的搜索键匹配)或委托给左或右子树。由于左子树或右子树将始终存在(它将是非空树或空树),“非空树”类可以通过公共接口简单地引用其子类,并依赖于运行时类型将做正确的事情这一事实(因此,在算法的实现中不需要对子对象进行任何强制转换或类型检查)

您需要知道运行时类型的唯一地方是在构造子级时