0
点赞
收藏
分享

微信扫一扫

LeetCode——965. 单值二叉树

小猪肥 04-17 12:00 阅读 2



题目- 力扣(LeetCode)

如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。

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

示例 1:

输入:[1,1,1,1,1,null,1]
输出:true

示例 2:

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

提示:

  1. 给定树的节点数范围是 [1, 100]
  2. 每个节点的值都是整数,范围为 [0, 99] 。

 1.解题思路:

要判断一个二叉树是否是单值二叉树,可以使用递归的方式进行判断。首先,我们需要定义一个递归函数,该函数接收一个二叉树节点作为参数,并返回一个布尔值。

在递归函数中,我们首先判断当前节点是否为空,如果为空,则返回true。然后,我们判断当前节点的值是否与其左子节点和右子节点的值相等,如果不相等,则返回false。接着,我们递归地调用该函数判断左子树和右子树是否为单值二叉树,如果有任意一个不是,则返回false。最后,如果左子树和右子树都是单值二叉树,并且当前节点的值与左子节点和右子节点的值相等,则返回true。

2. 代码实现

bool isUnivalTree(struct TreeNode* root) {
    if (root == NULL) {
        return true;
    }
    if (root->left != NULL && root->left->val != root->val) {
        return false;
    }
    if (root->right != NULL && root->right->val != root->val) {
        return false;
    }
    return isUnivalTree(root->left) && isUnivalTree(root->right);
}
举报

相关推荐

0 条评论