I am confused by the following codes and try to understand what they mean.
if( (root->left == NULL) || (root->right == NULL) )
{
Node *temp = root->left ? root->left : root->right;
}
it means if root->left ==NULL
then temp = root->left
? else temp = root->right
?