【发布时间】:2011-06-14 19:55:49
【问题描述】:
我正在尝试生成以下通用树:
root
|
----------------
| |
child child
|
----
|
child
|
-------------
| | |
child child child
我打算使用两个类,一个存储父节点元素(树类),另一个实现用于存储子节点的链表(Single_linked_list)。
我对 Tree 类的定义是:
template <class Object>
class Tree
{
private:
Object node_val; // this is stored in node of tree
Single_linked_list< Tree<Object> * > children;
public:
// accessors and mutators
...
}
我只是想确认Single_linked_list< Tree<Object> * > children; 应该在其中包含*,因为在c++ 中这是指定它是一个指针的方式,指向所有孩子的linked_list 的开始?
如果我对那行代码的解释正确,请告诉我。
【问题讨论】:
-
应该没问题。我可能将类本身称为“节点”而不是“树”,因为每个对象实际上都是一个节点,而树是所有节点的集合。还可以考虑存储
shared_ptrs 的节点而不是原始指针,因为当您实现任何类型的树操作时,您将为自己节省一个痛苦的世界。最后,单链表在 C++0x 中可用<forward_list>s。
标签: c++ class templates pointers tree