题目链接:单值二叉树
先来看下题目与例题
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true
;否则返回 false
。
示例 1:
![](https://img-blog.csdnimg.cn/img_convert/33193d6e10f5749a7c4516b7c1ea6e53.png)
输入:[1,1,1,1,1,null,1]
输出:true
示例 2:
![](https://img-blog.csdnimg.cn/img_convert/7ebbde2410f5de2cc304cdce536a94de.png)
输入:[2,2,2,5,2]
输出:false
从例题不难看出,就是让我们比较二叉树中的值是否相等,其实这题相对简单。
思路:
1.首先我们创建一个整形变量 去存头节点的值。
2.然后进入判断函数(刚才整形变量也传进去)
3.进入函数首先判断结点是否为空,若为空,那么比较没有意义,并且会出现不一致的错误,那么出现空结点时,直接return true就好了,因为空不代表他们的值不相等
4.用刚才传进来的的值依次跟每次递归的结点进行比较,当哪个结点不相等时,那么这课树肯定不是单值二叉树,直接return false。
5.当相等时,我们不进行处理,直接让他继续判断
6.最后当结点的左和右都相等时,那么就返回true,当其中有一个不相等,就返回fasle
bool isame(struct TreeNode* root,int val1)
{
if(root==NULL)
return true;
if(val1!=root->val)
return false;
return isame(root->left,val1)&&isame(root->right,val1);
}
bool isUnivalTree(struct TreeNode* root){
int val1=root->val;
return isame(root,val1);
}