1
XCodeで指定された配列からC++経由でバイナリ検索ツリーを設定しようとしています。 次のようにBSTを生成するために再帰を使用しています。BSTにノードを挿入するときのEXC_BAD_ACCESS(EXC_i386_GPFLT)
int main(int argc, const char * argv[]) {
const int length = 19;
int data[length] = {1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20};
Node* root = new Node(12);
for(int i = 0;i<length;i++){
insert(data[i], &root);
}
return 0;
}
、ここで私の挿入機能が
void insert(int key, Node **current)
{
if(*current == NULL)
{
Node *newnode = new Node(key);
*current = newnode;
}
else
{
if(key < (*current)->value) ---------EXCEPTION HERE
insert(key, &(*current)->left);
else
insert(key, &(*current)->right);
}
}
あり、時にはそれは例外EXC_BAD_ACCESS(コード= EXC_i386_GPFLT)をスローします。 Visual StudioでC#で同じロジックが正常に動作します。 C++のメモリに何か問題がありますか? 私はC++に精通していませんが、すべてがうまくいくようです。
'Node'クラスの宣言と定義を示す必要があります。最も可能性の高い答えは、 'left'と' right'が 'nullptr'に明示的に初期化されていないことです。 –
正確に!それは ノード(int _value){ 値= _値; } – taffarel
あなたは答えとして書くことができます。 – taffarel