2012-03-20 129 views
0

我有两个功能,创建一个二叉树类:二叉树插入指针问题

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退出时,仍然是一个空指针。有人能指出我愚蠢的错误吗?

回答

1

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

见下:

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

您需要通过引用传递root。