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? 
 
     
     
     
    