二叉树插入指针问题

时间:2012-03-20 03:47:17

标签: c++ pointers tree binary-tree

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

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

我想加载以在root用户填充树(root是私有节点指针node* root),但每次insertNode退出root时仍然是空指针。有人能指出我的愚蠢错误吗?

2 个答案:

答案 0 :(得分:1)

您需要通过引用传递root。

答案 1 :(得分:1)

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

见下文:

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