【问题标题】:How to implement binary search tree for a dictionary interface?如何为字典接口实现二叉搜索树?
【发布时间】:2012-05-13 07:47:06
【问题描述】:

我得到一个字典界面如下:

public interface Dictionary<E extends Comparable<E>> extends Iterable<E> {

现在我被要求使用二叉搜索树来实现这个接口,但是我不知道如何开始,因为我对上面实现 Dictionary 接口的理论概念很困惑。

这是我的实现类:

// Red-black binary search tree
public class DictionaryImp implements Dictionary<DictionaryImp>, Comparable<DictionaryImp> {

那么,我该如何实现以下这些方法呢? DictionaryImp 类将携带哪些实例变量?

public boolean isEmpty();
public boolean contains(E item);
public boolean hasPredecessor(E item);
// etc.

【问题讨论】:

    标签: java generics dictionary binary-search-tree


    【解决方案1】:

    我不知道你对红黑树的实现,但基本上你提到的所有方法都会调用相应的红黑树方法。

    isEmpty: 检查树是否为空

    contains(E item):对树执行二分查找以查找元素。如果可以找到则返回true

    add(E item): if (!contains(item)) tree.add(item);

    等等。

    【讨论】:

      【解决方案2】:

      你的类声明没有多大意义。 Dictionary 的类型参数好像是针对字典的元素类型的;这就是为什么他们要求元素与它们自身具有可比性。您的声明似乎说DictionaryImp 是一个字典,其元素也是DictionaryImp,这没有意义。您可能想要的是一个DictionaryImp,它也是通用的,其元素类型与其自身相当,并使用相同的类型参数实现字典,如下所示:

      public class DictionaryImp<E extends Comparable<E>> implements Dictionary<E>
      

      【讨论】:

        猜你喜欢
        • 2015-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-24
        • 2010-11-22
        • 2013-05-03
        • 2019-02-20
        • 1970-01-01
        相关资源
        最近更新 更多