C语言每日一题(52)单值二叉树

力扣网 965 单值二叉树

题目描述

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

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

示例 1:

C语言每日一题(52)单值二叉树_第1张图片

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

示例 2:

C语言每日一题(52)单值二叉树_第2张图片

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

提示:

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

涉及知识点 二叉树 递归

思路分析

和相同二叉树是一个道理,也是判断两个结点情况,但这次是要从根结点开始判断,一旦值不相等就返回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);
}

你可能感兴趣的:(数据结构,算法)