Leetcode.965. 单值二叉树

在这里插入图片描述

1.题目描述

如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true;否则返回 false。

示例一:
在这里插入图片描述
示例二:
在这里插入图片描述

2.原题链接

Leetcode.965. 单值二叉树

3.思路分析

此题采用分治思路 ,转换为子问题会更加简单
如果是空树,可以理解为所有的值都相等,符合题目要求的单值二叉树

如果不是空树 ,根节点的值和左右孩子的值相比较 , 但是左右孩子可能有一个孩子为空
如果左孩子不为空,且左孩子的值与根节点值相等则继续
如果右孩子不为空,且右孩子的值与根节点值相等则继续
往下递归调用

4.代码实现

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);

}

在这里插入图片描述

在这里插入图片描述

如果你觉得这篇文章对你有帮助,不妨动动手指给点赞收藏加转发,给鄃鳕一个大大的关注
你们的每一次支持都将转化为我前进的动力!!!

猜你喜欢

转载自blog.csdn.net/qq_73478334/article/details/129882499