这一段的两个判断条件,一定要root->left!=NULL在前
如果root->val!=root->left->val在前,root->left为空的时候,就无法拿出root->left->val,在一个NULL的指针里拿不出val。
把root->left!=NULL放在前面,先判断左节点是否为空,如果为空,后面的条件就直接略过,整个表达式就为假,如果不为空,就走&&后面的表达式判断左节点的值与root是否相同。
bool isUnivalTree(struct TreeNode* root) {
if(root==NULL)
{
return true;
}
if(root->left!=NULL&&root->val!=root->left->val) //不能倒过来写。
{
return false;
}
if(root->right!=NULL&&root->val!=root->right->val)
{
return false;
}
return isUnivalTree(root->left)&&isUnivalTree(root->right);
}