我可以用这个做二元搜索树吗?

时间:2010-02-08 02:33:42

标签: c++ binary-tree treenode

我以前做过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但遇到了一些问题。首先,当我创建根节点时,我无法访问其子节点的指针。

3 个答案:

答案 0 :(得分:3)

不,您将无法使用“在此处公开会员功能”的课程制作BST。

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

答案 1 :(得分:2)

没有修改,没有。

但是,“将公共成员函数置于此处”这一行正在尖叫着你应该修改它。

由于您谈到权限问题,这意味着您正在尝试使用免费功能。但由于指针是私有的,因此您无法访问它们。

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

class binary_tree_node
{
  public:
    binary_tree_node()
    {
    }

    bool is_item_in_tree(const Item &item)
    {
    }

    ...
};

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

答案 2 :(得分:0)

通常情况下,您应该为新的Item类提供比较界面,因为在插入和删除操作中,需要进行比较。

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

我建议您添加一个通用比较类名Item,以便为Comp类提供编译接口。