【C语言题解】 | 965. 单值二叉树

965. 单值二叉树

提示:

  1. 给定树的节点数范围是 1, 100。
  2. 每个节点的值都是整数,范围为 0, 99 。
c 复制代码

这个题目我们通过分治思想来解题:

首先传入的是根节点

其次判断根节点是否有左子树和右子树,若存在则判断左右子树的值是否于根节点的值相同(不同则返回false,相同则继续)

c 复制代码
if(root->left && root->left->val != root->val
{
	return false;
}
if(root->right && root->right->val != root->val
{
	return false;
}

若正确,则继续向下递归,但是由于此题目要求返回true or flase,所以,我们需要返回

c 复制代码
return isUnivalTree(root->left) &&
    isUnivalTree(root->right);

因为是左右子树都必须满足,所以是 &&

代码:

c 复制代码
/**
 * 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);
}
相关推荐
钝挫力PROGRAMER4 分钟前
Java 日常开发常用 API 总结与示例
java
七牛云行业应用8 分钟前
刚刚!GPT-6.1 Sol Ultrafast 上线:速度、价格、API 接入全指南
算法
Omics Pro8 分钟前
研究证实AI虚拟细胞可用于药物靶点发现
数据库·人工智能·算法·机器学习·自然语言处理
在所不辞兄13 分钟前
常微分方程详解与应用
人工智能·神经网络·算法·机器学习
小鹿的周先生13 分钟前
第16章-RAG
java·人工智能·ai编程
-dzk-14 分钟前
【动态规划】LC 416.分割等和子集
算法·动态规划·代理模式
夜不会漫长20 分钟前
C++:内存管理
java·开发语言·c++
彦22 分钟前
C和C++笔记
c语言·c++·笔记
vipxieliang33 分钟前
ValidX 财务系统发票验证:发票号、税号、金额校验
java·spring boot
夏幻灵34 分钟前
每日一题:LeetCode 1:两数之和——从暴力枚举到 Map 哈希表优化
算法·leetcode·散列表