2012-03-20 27 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がrootを終了するたびに、それでもnullポインタが返されます。誰かが私の愚かな間違いを指摘できますか?

答えて

1

insertNodeからrootを変更できるようにするには、パラメータとしてrを渡す必要があります。

以下を参照してください。

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

参照によってルートを渡す必要があります。