C ++中的BinaryTree节点类

时间:2013-07-08 20:06:27

标签: c++ binary-tree

我正在尝试为二叉树实现构建一个节点类。这是Node类的头文件:

class Node {
public:
    Node();
    Node(int value);
    void setParent(Node& parent);
    void setLeftChild(Node& child);
    void setRightChild(Node& child);
    void setValue(int value);
    void setIndex(int index);
    void setHeight(int height);
private:
    int value;
    Node& parent;
    Node& leftChild;
    Node& rightChild;
    int height;
    int index;
};

现在,我想编写上面声明的构造函数Node(int value)。 我该如何初始化leftChild,rightChild,父字段?它们也是Node,因此我想在它们上调用默认构造函数,但它似乎不起作用。     Node :: Node(int value):value(value),parent(),leftChild(),rightChild(){     }

编译器说“对类型'Node'的引用需要一个初始化器”

感谢。

3 个答案:

答案 0 :(得分:0)

您最好使用指针(Node*)而不是引用(Node&)。在构造函数中,只需为它们分配nullptr

引用某些对象是必要的(显然,当你没有左或右孩子时,你无法引用它们)。所以指针来这里是为了帮助你 - 它们允许指向任何东西 - 在这种情况下nullptr被用作任何东西。

答案 1 :(得分:0)

您应该使用指定节点父节点的构造函数:         节点(Node * parent,int value);  创建根节点时,只需将NULL作为参数调用此构造函数。 所有对父母和孩子的引用都应该是指针。

答案 2 :(得分:0)

在这种情况下,在引用上使用指针并将它们初始化为NULL是有意义的。通过执行此操作,您还可以通过检查NULL指针来检查节点是否具有子节点或父节点(即,不是根节点)。另外,请务必添加析构函数以释放内存。