当前位置: 首页 > news >正文

【C】链式二叉树算法题1 -- 单值二叉树

leetcode链接https://leetcode.cn/problems/univalued-binary-tree/description/


1  题目描述 

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

示例 1:

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


示例 2:

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

  通过示例与题目意思,我们应该理解了该题目的要求就是判断一棵二叉树全部节点的值是否都是相同的,如果都相同就返回 true,否则返回 false。


2  算法解析 

  对于一棵二叉树来说,其相关算法题一般都可以考虑用递归算法来解决,因为一棵二叉树就是递归定义的嘛。这道题的解法有这么几种情况:

1) 当根节点为空时,此为一棵单值二叉树。

2) 当根节点不为空且其左孩子也不为空,但是根节点的值跟左孩子节点的值不相同,说明其不是一棵单值二叉树。

3) 当根节点不为空且其右孩子也不为空,但是根节点的值不与右孩子的值相同时,说明其也不是一棵单值二叉树。

4) 整棵树是一棵单值二叉树又可递归定义为根节点的左子树是一棵单值二叉树且其右子树也是一棵单值二叉树。

  其中 4)为递归过程,前三条为边界条件。


3  代码

typedef struct TreeNode TreeNode;
bool isUnivalTree(struct TreeNode* root) 
{//如果根结点为空,返回trueif (root == NULL){return true;}//如果左孩子不为空,且根节点值不等于左孩子的值,返回falseif (root->left && root->val != root->left->val){return false;}//如果右孩子不为空,且根节点值不等于右孩子的值,返回falseif (root->right && root->val != root->right->val){return false;}//判断左子树与右子树是否都是一棵相同的树return isUnivalTree(root->left) && isUnivalTree(root->right);
}
http://www.lryc.cn/news/545348.html

相关文章:

  • C++11——智能指针和function库
  • [操作系统] 文件的软链接和硬链接
  • RabbitMQ面试题及原理
  • SpringBoot中Get请求和POST请求接收参数详解
  • 分布式日志和责任链路
  • h5 IOS端渐变的兼容问题 渐变实现弧形效果
  • 哈希算法--猜数字游戏
  • idea生成自定义Maven原型(archetype)项目工程模板
  • Redis面试常见问题——使用场景问题
  • 样式和ui(待更新)
  • 大摩闭门会:250228 学习总结报告
  • 线程(Thread)
  • AI军备竞赛2025:GPT-4.5的“情商革命”、文心4.5的开源突围与Trae的代码革命
  • DeepSeek + 自由职业 发现新大陆,从 0 到 1 全流程跑通商业 IP
  • Java进阶——常用工具类
  • 【考试大纲】高级系统架构设计师考试大纲
  • 上位机知识篇---四种CPU架构交叉编译
  • 隐式转换为什么导致索引失效
  • 【含文档+PPT+源码】基于过滤协同算法的旅游推荐管理系统设计与实现
  • SpringBoot @Value 注解使用
  • Spring Boot 3.x 系列【3】Spring Initializr快速创建Spring Boot项目
  • 高频 SQL 50 题(基础版)_1667. 修复表中的名字
  • Windwos10 系统没有微软商店(Microsoft Store)怎么办?
  • c++同步机制
  • RuoYi框架介绍,以及如何基于Python使用RuoYi框架
  • Go 语言环境安装
  • vector 面试点总结
  • Java 8 新特性
  • 知识库技术选型:主流Embedding模型特性对比
  • CAN总线通信协议学习2——数据链路层之帧格式