私はクラスのためのバランシングバイナリツリーを作成していますが、C++でポインターと参照を使う方法について混乱しています。ツリーに実際にノードが追加されていないため、curr
が新しいNode
に切り替えられただけなので、以下のコードではsegfaultが発生します。新しいNode
が、curr
を再割り当てするのではなく、curr
がツリー上のどこに向いているかに移動するには、どうすればいいですか?C++でツリーにノードをアタッチする(参照とポインタのヘルプ)
void BalancedTree::insert(int input)
{
cout << "Insert started\n"; //DEBUG
Node* trailingNode;
Node* curr;
curr = this->root;
while(curr != NULL){
cout << "Addloop\n"; //Debug
if(input < curr->data){ //input smaller than current
cout << "Left\n"; //DEBUG
trailingNode = curr;
curr = curr->left;
}else{ //input larger than current node
cout << "Right\n"; //DEBUG
trailingNode = curr;
curr = curr->right;
}
}
insert(curr, input);
cout << "test" << endl;
cout << root->data << " added\n"; //DEBUG
// curr->parent = trailingNode; //Set the parent
size++; //Increase size
}
//Helper method
void BalancedTree::insert(Node*& curr, int input)
{
curr = new Node(input);
}