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