Code:
if (NULL == vertex->right() == vertex->left())
// wutdo
Seems legit, if both values equal NULL, we wutdo.
THAT IS UNTIL we take apart and realize how the compiler sees this statement differently from us. NULL is #define'd as 0. Boolean values are represented by 1 = true, 0 = false
So if the right vertex was NULL, it would evaluate that part of the equation to True before moving on. Now we would basically have the following:
Code:
if (1 == vertex->left())
Not what we want at all.
Likewise, if vertex->right() was
not NULL, it would evaluate to false. So now we have:
Code:
if (0 == vertex->left()
This is also wrong, since right had a value.
Correct:
Code:
if (vertex->right() == NULL && vertext->left() == NULL)
[You must be logged in to view images. Log in or Register.]