2012-03-20 127 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。