目录
题述(力扣难度:简单):
思路:
正确的代码:
题述(力扣难度:简单):
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的数树是单值二叉树,才返回 true;否则返回 false。
示例1:
输入:【1,1,1,1,1,NULL,1】
输出:true
题中已给:
struct TreeNode
{
int val;
struct TreeNode* left;
struct TreeNode* right;
};int isUnivalTree(struct TreeNode* root)
思路:
当前树与左子树右子树比较,(左子树和右子树又可以分为当前树,左子树和右子树)直到遇到NULL,才会一层一层往回归。注:空树应看做中值二叉树。
正确的代码:
struct TreeNode
{
int val;
struct TreeNode* left;
struct TreeNode* right;
};
bool isUnivalTree(struct TreeNode* root)
{
if (root == NULL)
return true;
//判断当前树的值是否相等
if (root->left && root->val != root->left->val)
{//这里不相等就直接返回false,如果用判断相等再比较,后续就很麻烦了
//root->left如果为NULL,left->val是不合法的
return false;
}
if (root->right && root->val != root->right->val)
{
return false;
}
//当前树判断完毕,能来到这说明当前树的值都满足相等
//当前树满足相等了,就再递归判断左右子树的值是否相等
return isUnivalTree(root->left) && isUnivalTree(root->right);
}