私は(ADT)バイナリシードツリーの実装を行っています。私は、息子が持つ親の数を数える関数を実行しなければなりませんでした差は5未満です。プログラムが動作し、このFunctonだけが失敗します。HW3.exeの0xCFで処理されない例外:0xC0000005:アクセス違反の読み取り場所0x00000004
で 'return'(再帰的)にブレークポイントがあります。あなたが入力した場合、あなたのreturn
声明で
int difference(BSTNode *root, comperFunc cmpFn, comperFunc lesserThenFive)
{
int count = 0;
if (root)
{
count = 0;
if (root->Left && root->Right)
{
//if root->Right > root->Left
if (cmpFn(root->Right->key, root->Left->key) == 1)
{
if (lesserThenFive(root->Right->key, root->Left->key))
count = 1;
}
//if root->Right < root->Left
if (cmpFn(root->Right->key, root->Left->key) == -1)
{
if (lesserThenFive(root->Left->key, root->Right->key))
count = 1;
}
}
}
return difference(root->Left, cmpFn, lesserThenFive) + difference(root- >Right, cmpFn, lesserThenFive) + count;//here is the break point
}
[mcve]を入力してください。 –
'return difference(root-> Left、...': 'root'が' NULL'なら 'NULL'逆参照が発生します。 – BLUEPIXY
@Lundinわかりませんでした:-) – JeremyP