2010-02-08 37 views
-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

作业? ..... – 2010-02-08 02:37:14

+0

我认为这是重要的,以显示什么是公共成员功能。如果一切都是私密的,那么不,这是不可能的。 – Phil 2010-02-08 02:39:19

+0

你说“我以前做过BST” - 所以为什么不把它与以前的解决方案进行比较? – 2010-02-08 02:41:33

回答

2

没有修改,没有。

但是,'在这里放置公共成员函数'这一行尖叫着你应该修改它。

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

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

class binary_tree_node 
{ 
    public: 
    binary_tree_node() 
    { 
    } 

    bool is_item_in_tree(const Item &item) 
    { 
    } 

    ... 
}; 

无论如何,我会建议您查看周围的知名度和OOP你的C++基础知识。

+0

是的,我明白你在说什么了。为了访问子指针,我需要创建类函数。 – neuromancer 2010-02-08 03:23:51

3

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

它甚至不会编译没有一些漂亮的hacky typedefs和宏。

+0

我打算对这个答案是多么不专业并且咆哮,然后我看到他说“没有修改”。 – 2010-02-08 03:06:16

+0

等等,是由Robert C. Cartaino编辑的吗? – 2010-02-08 03:07:27

+0

@Platinum:不,他只编辑标签并固定缩进 - 单击*编辑的x分钟前*查看编辑历史记录。 – 2010-02-08 03:10:55

0

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

的具体信息未给,所以我不知道你是否使用<>等关系运算符或not.But如果您使用them.You应该确保新的Item类支持这些操作符。

我建议您添加一个通用比较类名称Comp,以提供Item类的compration接口。