3

私は二分探索木を構築しています。以下は追加機能です。

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);
}

最後の 2 つの (ノード、親) パラメータのデフォルト パラメータを設定したい:

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 に答える