我在创建二叉树的类中有两个函数:

void Btree::insertNode(node* r, node* newNode){
    if (r == NULL)
        r = newNode;
    else if (greater(root, newNode))
        insertNode(r->left, newNode);
    else
        insertNode(r->right, newNode);
}

void Btree::load(){
    for (int i = 0; i < mainVec.size(); ++i){
        node* n = new node;
        n->index = i;
        for (int j = 0; j < mainVec[i].size(); ++j)
            n->s += mainVec[i][j];
        insertNode(root, n);
    }
    printTree(root);
    return;
}


我想加载以填满根目录下的树(根目录是私有节点指针node* root),但是每次insertNode退出根目录时,它仍然是空指针。有人可以指出我的愚蠢错误吗?

最佳答案

您需要使参数r作为参考传递,以便能够从函数root内部更改insertNode

见下面:

void Btree::insertNode(node*& r, node* newNode) {
   ...
}

10-06 01:58