题目(力扣):
判断二叉树上每个节点的值是否相同,就需要让root节点分别与左节点和右节点分别比较是否相同。
注意:root等于空时,直接可以返回true;
首先,先判断他的特殊情况:
当root == NULL时,即可return true;
if (!root){return true;}
接着,就可以分别去判断root和他的左节点的值是否相同,root和他的右节点的值是否想同。
判左:
if (root->left){if (root->val != root->left->val|| !isUnivalTree(root->left))return false;}
判右:
if (root->right){if (root->val != root->right->val|| !isUnivalTree(root->right))return false;}
由于要层层递进的判断每个节点,所以要使用递归遍历到每个节点。
最后,由于所有false情况都已经判断过了,如果有情况上述false都不满足,则最后返回true。
return true;
题目的提交:
完整代码:
bool isUnivalTree(struct TreeNode* root) {if (!root){return true;}if (root->left){if (root->val != root->left->val|| !isUnivalTree(root->left))return false;}if (root->right){if (root->val != root->right->val|| !isUnivalTree(root->right))return false;}return true;
}