• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

AmyMoJianJun

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

[LeetCode]965.单值二叉树

/*965. 单值二叉树
已解答
简单
相关标签
相关企业
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。

只有给定的树是单值二叉树时,才返回 true;否则返回 false。

示例 1:
输入:[1,1,1,1,1,null,1]
输出:true
示例 2:

输入:[2,2,2,5,2]
输出:false

提示:

给定树的节点数范围是 [1, 100]。
每个节点的值都是整数,范围为 [0, 99] 。
/
/
*
Definition for a binary tree node.
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(nullptr), right(nullptr) {}
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};
*/

class Solution {
   //本问题可采用深度优先搜索,判断当前节点与每一个子节点的关系是否满足要求,以左子节点为例,如果其不为空且其值与母节点值相等,则继续向下搜索该左子节点。此处要保证递归搜索时该搜索结果能够返回。如果值不相等则直接返回false.右子节点同理。
   bool equal(TreeNode* root){
       if(root->left!=nullptr){
           if(root->val!=root->left->val)
               return false;
           else
               if(!equal(root->left))//关键点,只有在左子节点返回值为空时使得当前节点返回false,不为空时不返回值。
               return false;
       }
         if(root->right!=nullptr){//关键点,对右子节点同理操作,避免遗漏。
           if(root->val!=root->right->val)
               return false;
           else
               if(!equal(root->right))
               return false;
       }
       return true;//关键点,只有在左方的子节点以及右方的所有节点都检索后,无不同时返回true
   }
public:
   bool isUnivalTree(TreeNode* root) {
       bool univalflag=equal(root);
       return univalflag;

   }
};

posted on 2024-07-13 11:12  Mo_Jianjun  阅读(17)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3