我以前做过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,但遇到了一些问题。一方面,当我创建根节点时,我无法访问指向其子节点的指针。
我以前做过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,但遇到了一些问题。一方面,当我创建根节点时,我无法访问指向其子节点的指针。
不,您将无法使用“在此处放置公共成员函数”的类来制作 BST。
如果没有一些非常 hacky 的 typedef 和宏,它甚至无法编译。
没有修改,没有。
但是“在此处放置公共成员函数”这一行正在尖叫您应该对其进行修改。
既然你说的是权限问题,那就说明你在尝试使用免费功能。但由于指针是私有的,您将无法访问它们。
你应该做的是创建成员函数。例如:
class binary_tree_node
{
public:
binary_tree_node()
{
}
bool is_item_in_tree(const Item &item)
{
}
...
};
无论如何,我建议您查看有关可见性和 OOP 的 C++ 基础知识。
通常情况下,你应该为新Item
类提供比较接口,因为在插入和删除操作中,需要比较。
没有给出具体信息,所以我不知道你是否使用<
和>
等关系运算符。但是如果你使用它们。你应该确保新Item
类支持这些运算符。
我建议您添加一个通用比较类名称Comp
来为该类提供比较接口Item
。