代码之家  ›  专栏  ›  技术社区  ›  chester89

BST实现中的一个小问题

  •  1
  • chester89  · 技术社区  · 17 年前

    我正在为二叉搜索树编写类似STL的容器。我有树本身的模板类和嵌套类TreeNode。
    我的问题是,我应该把二进制谓词函数放在什么地方,它对应的键是树类还是节点类?如果我决定将其放在树类中,我的所有节点都不知道如何比较它们的键:(
    如果在节点类中,我应该使这个函数静态还是不静态?

    2 回复  |  直到 17 年前
        1
  •  1
  •   rmn    17 年前

        2
  •  1
  •   Greg Rogers    17 年前

    很明显,您不能使其静态化—如果您这样做了,那么具有两个不同比较函数的两个不同的树将不起作用(后者将覆盖全局函数)。

    所以最好的选择是把它变成容器的一部分。至于你反对节点不能比较它们自己,那又有什么关系呢?唯一一次比较两个节点是在容器上的一个操作的上下文中,在这种情况下,您可以将comparer对象放在手边。