我在一个创建二叉树的类中有两个函数:
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时仍然是空指针。有人能指出我的愚蠢错误吗?
答案 0 :(得分:1)
您需要通过引用传递root。
答案 1 :(得分:1)
您需要将参数r
作为参考传递,以便能够在函数root
内更改insertNode
。
见下文:
void Btree::insertNode(node*& r, node* newNode) {
...
}