I don’t really know what more to say about this.
I have never, ever seen this happen. And it just boggles me what causes this. I figured you guys might have seen this before and now what silly thing I am doing.
Notes about it: ‘temp’ is a variable the function is taking in. It is a Binary Tree Node (BTN). temp->d accesses the data. ->l is left child, ->r is right child. ->p is parent
NOTE: THIS IS HOMEWORK. IT IS FOR A PRIORITY QUEUE.
NOTE2: I have looked at similar questions. All have suggested a timing error and the ‘cout’ ‘slows’ the code down. What would cause this? I can’t think of any really ‘costly’ things I am doing.
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);
}
}
}
}
Make sure nTemp is initialized. I bet it isn’t. The cout causes something “benign” to be placed in nTemp.