这一段的两个判断条件,一定要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);}