Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我可以用这个做一个二叉搜索树吗?_C++_Binary Tree_Treenode - Fatal编程技术网

C++ 我可以用这个做一个二叉搜索树吗?

C++ 我可以用这个做一个二叉搜索树吗?,c++,binary-tree,treenode,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。我可以用这个来做一个没有修改的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


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

但“在此处放置公共成员函数”这一行大声疾呼,你应该修改它

既然您谈到了权限问题,这就意味着您正在尝试使用自由函数。但是由于指针是私有的,您将无法访问它们

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

class binary_tree_node
{
  public:
    binary_tree_node()
    {
    }

    bool is_item_in_tree(const Item &item)
    {
    }

    ...
};

无论如何,我建议在可见性和OOP的基础上复习你的C++基础知识。

通常,你应该为新的<代码>项目类提供比较界面,因为在插入和删除操作中,需要进行比较。 没有给出具体的信息,因此我不知道您是否使用

等关系运算符。但是如果您使用它们,您应该确保新的
类支持这些运算符


我建议您添加一个通用比较类名称
Comp
,为
类提供压缩接口。

我认为显示公共成员函数是很重要的。如果一切都是私密的,那么不,这是不可能的。你说“我以前做过BST”-那么为什么不把这和你以前的解决方案进行比较呢?我本来打算投反对票,大骂这个答案有多不专业。。。然后我看到他说“没有修改”。@Platinum:没有,他只编辑了标签并修复了缩进-点击编辑的x分钟前查看编辑历史。OP现在已经从问题中删除了这一行。现在合适的答案可能是“不,你不能用一个完全没有公共字段或方法的类来创建BST”。是的,我明白你的意思。为了访问子指针,我需要创建这样做的类函数。