我真的不知道还有什么可说的.
我从来没有见过这种情况.而这只是让我感到困惑的原因.我想你们之前可能已经看过这个,现在我正在做些什么傻事.
关于它的注释:'temp'是函数所采用的变量.它是二叉树节点(BTN).temp-> d访问数据. - > l是孩子, - > r是对的孩子. - > p是父母
注意:这是家庭作业.这是优先考虑的问题.
注2:我看过类似的问题.所有人都提出了一个计时错误,'cout''减慢了代码的速度.什么会导致这个?我想不出我正在做的任何真正"昂贵"的事情.
BTN<generic>* nTemp;
cout << "Sdf\n";
if(temp->r != NULL)
{
if(temp->l != NULL)
{
if(*(temp->r->d) > *(temp->l->d))
{
if(*(temp->r->d) > *(temp->d))
{
cout << "ASDfs5: " << *(temp->d) << "\n"; //THIS IS WHAT KEEPS IT FROM BREAKING / SEGFAULTING
nTemp->d = temp->d; //THIS IS WHERE IT BREAKS (SEGFAULT)
cout << "ASDfs\n";
temp->d = temp->r->d;
cout << "ASDfs4\n";
temp->r->d = nTemp->d;
cout << "ASDfs3\n";
if(temp->r != NULL)
{
checkPopValues(temp->r);
cout << "ASDfs2\n";
}
}
}
else
{
if(*(temp->l->d) > *(temp->d))
{
nTemp->d = temp->d;
temp->d = temp->l->d;
temp->l->d = nTemp->d;
checkPopValues(temp->l);
}
}
}
else
{
if(*(temp->r->d) > *(temp->d))
{
nTemp->d = temp->d;
temp->d = temp->r->d;
temp->r->d = nTemp->d;
checkPopValues(temp->r);
}
}
}
else
{
cout << "sdfs\n";
if(temp->l != NULL)
{
if(*(temp->l->d) > *(temp->d))
{
nTemp->d = temp->d;
temp->d = temp->l->d;
temp->l->d = nTemp->d;
checkPopValues(temp->l);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
你没有分配任何东西nTemp.它指的是垃圾.
当您在中断的行上访问它时,会发生未定义的行为.如果你很幸运,你应该获得访问冲突/段错误.如果你不幸运,它会默默地"工作",但可能会给你错误的结果.
您需要为其指定现有指针BIN<Generic>或创建新指针.