1

我使用复合模式来实现树结构。它有 3 个类:节点(基类)、叶子(无子类)和分支(有子类)。我有一些常见的数据放在树节点中,比如根。常见数据的一个例子是米或公里的单位选择。公共数据应该被所有节点访问。如何实施?将公共数据的指针指向所有节点似乎并不具有内存效率。

4

1 回答 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 回答