3

我正在构建一个二叉搜索树,以下是 add 函数:

void BinaryTree::add(int value, Node*& node, Node*& parent) {
    if(!node) {
        node = new Node(value);
        node->parent = parent;
    }
    else if(node->key < value)
        this->add(value, node->rightNode, node);
    else if(node->key > value)
        this->add(value, node->leftNode, node);
}

我想为最后两个(节点,父)参数设置默认参数:

void add(int value, Node*& node = root , Node*& parent = nullptr);

其中 root 是类的一个字段。

这似乎不适用于任何一种情况。我该如何实施它,这里有什么问题?谢谢!

4

1 回答 1

4

您无法初始化对nullptr. 它们必须是有效的对象。要制作root默认对象,您可以添加具有相同名称的新函数

void BinaryTree::add(int value) {
    Node* emptyParent = nullptr;
    add(value, root, emptyParent); 
}
于 2013-07-09T19:57:20.047 回答