-3

我以前做过BST。我可以用它来制作 BST 而无需修改吗?

template <class Item>
class binary_tree_node
{
  public:

  private:
    Item data_field;
    binary_tree_node *left_ptr;
    binary_tree_node *right_ptr;
};

我尝试用这个制作 BST,但遇到了一些问题。一方面,当我创建根节点时,我无法访问指向其子节点的指针。

4

3 回答 3

3

不,您将无法使用“在此处放置公共成员函数”的类来制作 BST。

如果没有一些非常 hacky 的 typedef 和宏,它甚至无法编译。

于 2010-02-08T02:36:53.983 回答
2

没有修改,没有。

但是“在此处放置公共成员函数”这一行正在尖叫您应该对其进行修改。

既然你说的是权限问题,那就说明你在尝试使用免费功能。但由于指针是私有的,您将无法访问它们。

你应该做的是创建成员函数。例如:

class binary_tree_node
{
  public:
    binary_tree_node()
    {
    }

    bool is_item_in_tree(const Item &item)
    {
    }

    ...
};

无论如何,我建议您查看有关可见性和 OOP 的 C++ 基础知识。

于 2010-02-08T03:02:04.247 回答
0

通常情况下,你应该为新Item类提供比较接口,因为在插入和删除操作中,需要比较。

没有给出具体信息,所以我不知道你是否使用<>等关系运算符。但是如果你使用它们。你应该确保新Item类支持这些运算符。

我建议您添加一个通用比较类名称Comp来为该类提供比较接口Item

于 2010-02-08T11:12:22.257 回答