我使用复合模式来实现树结构。它有 3 个类:节点(基类)、叶子(无子类)和分支(有子类)。我有一些常见的数据放在树节点中,比如根。常见数据的一个例子是米或公里的单位选择。公共数据应该被所有节点访问。如何实施?将公共数据的指针指向所有节点似乎并不具有内存效率。
问问题
60 次
1 回答
1
一种方法是为树添加一个单独的类,将root
指针放在那里,并在那里添加所有常见的项目。然后添加一个tree
指向node
基类的指针,并添加一个构造函数参数以将树的所有节点指向它们的tree
对象:
class node;
class tree {
node *root;
int multiplier; // e.g. 1000 for meters, 1 for kilometers
}
class node {
protected:
tree *owner;
node *parent; // parent is NULL for the root
node(tree *_owner, node *_parent) : owner(_owner), parent(_parent) {}
};
class branch : public node {
list<node> children;
public:
branch(tree *_owner, node *_parent) : node(_owner, _parent) {}
...
};
于 2013-10-13T02:05:43.393 回答