残りのデバッグ情報を見ると、新しいノードの左右のポインターがであることがわかります0xcdcdcdcd
。これは、私が知る限り、VisualStudioでのデバッグビルドの未開始ポインターの標準値です。
エラーは、新しいノードのポインタを初期化していない。これが起こっていることです:
最初top
はNULL
、で、が4のノードを挿入しますnbr
。新しいトップはnbr
4のノードですが、2つのポインタが本質的にガベージを指しています。
10を挿入しようとすると、10と4が正しく比較され、4の右側のサブツリーに10が挿入されます。この右側のサブツリーは初期化されていないため、エラーが発生します。
これを修正する1つの方法は、コードを次のようにすることです。
static void insertion(Noeud *&top, Noeud *newNoeud) {
if (top == NULL) {
top = newNoeud;
top->droite = NULL;
top->gauche = NULL;
} else if (newNoeud->nbr < top->nbr)
insertion(top->gauche, newNoeud);
else
insertion(top->droite, newNoeud);
}
完全な例を次に示します。http://ideone.com/5TDD49