本专栏内容为:leetcode刷题专栏,记录了leetcode热门题目以及重难点题目的详细记录
博主csdn个人主页:小小unicorn
⏩专栏分类:八大排序汇总
代码仓库:小小unicorn的代码仓库
关注我带你学习编程知识
题目来源:leetcode.985:单值二叉树
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true;否则返回 false。
这个题我们可以通过判断二叉树的根与叶子是否相等来解决这个问题,注意要分三种情况:
1.如果是空树,那也是符合情况的,直接返回true。
2.首先满足左子树不为空的条件下,判断左子树的值是否与根相同,相同返回true,不相同返回false.
3.首先满足右子树不为空的条件下,判断右子树的值是否与根相同,相同返回true,不相同返回false.
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool isUnivalTree(struct TreeNode* root)
{
if(root==NULL)
{
return true;
}
if(root->left && root->left->val != root->val)
{
return false;
}
if(root->right && root->right->val != root->val)
{
return false;
}
return isUnivalTree(root->left)&&isUnivalTree(root->right);
}
总结:本题题目简单,其主要解决方法采取递归的方式来解决,利用递归前要判定几种特殊情况。