当前位置: 首页 > 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);
}

相关文章:

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

leetcode链接https://leetcode.cn/problems/univalued-binary-tree/description/ 1 题目描述 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。 示例 1&#xff1…...

C++11——智能指针和function库

目录 一、智能指针 1. std::unique_ptr(独占所有权指针) 2. std::shared_ptr(共享所有权指针) 3. std::weak_ptr(弱引用指针) 关键区别总结 最佳实践 基本用法 可封装的对象类型 核心特性 示例代码…...

[操作系统] 文件的软链接和硬链接

文章目录 引言硬链接(Hard Link)什么是硬链接?硬链接的特性硬链接的用途 软链接(Symbolic Link)什么是软链接?软链接的特性软链接的用途 软硬链接对比文件的时间戳实际应用示例使用硬链接节省备份空间用软链…...

RabbitMQ面试题及原理

RabbitMQ使用场景: 异步发送(验证码、短信、邮件…)MYSQL和Redis, ES之间的数据同步分布式事务削峰填谷 1. 消息可靠性(不丢失) 消息丢失场景: RabbitMQ-如何保证消息不丟失? 开启生产者确…...

SpringBoot中Get请求和POST请求接收参数详解

1、Get请求 1.1 方法形参接收参数 这种方式一般适用参数比较少的情况,并且前后端参数名称必须保持一致 RestController RequestMapping(“/user”) Slf4j public class DemoController { GetMapping("/query") public void getStudent(String name,Strin…...

分布式日志和责任链路

目录 日志问题 责任链问题 分布式日志 GrayLog简介 部署安装 收集日志 配置Inputs 集成微服务 日志回收策略 搜索语法 搜索语法 自定义展示字段 日志统计仪表盘 创建仪表盘 链路追踪 APM 什么是APM 原理 技术选型 Skywalking简介 部署安装 微服务探针 整合…...

h5 IOS端渐变的兼容问题 渐变实现弧形效果

IOS端使用渐变的时候有兼容问题 以下是问题效果,图中黑色部分期望的效果应该是白色的。但是ios端是下面的样子…… 安卓pc 支持: background-image: radial-gradient(circle 40rpx at 100% 0, #f3630c 40rpx, rgb(255, 255, 255) 50%);安卓pc ios支持…...

哈希算法--猜数字游戏

1.题目要求 输入两个位数相同的数,判断对应位置的数字是否相等,返回两个数。第一个数是数字和位置完全猜对的数字个数,第二个数是数字大小猜对但位置不对的数字个数 2.逐步编程 2.1 定义函数 def g(secret,guess):sec_dic{}gue_dic{}# 定义…...

idea生成自定义Maven原型(archetype)项目工程模板

一、什么是Maven原型(Maven archetype) 引自官网的介绍如下: Maven原型插件官网地址 这里采用DeepSeek助手翻译如下: Maven 原型 什么是原型? 简而言之,原型是一个 Maven 项目模板工具包。原型被定义为一…...

Redis面试常见问题——使用场景问题

目录 Redis面试常见问题 如果发生了缓存穿透、击穿、雪崩,该如何解决? 缓存穿透 什么是布隆过滤器? 缓存击穿 缓存雪崩 双写一致性(redis做为缓存,mysql的数据如何与redis进行同步呢?) …...

样式和ui(待更新)

element-plus 先在项目下执行安装语句执行按需导入的命令按照官方文档修改vitest.json sass样式定制 npm -i sass -D在项目下准备定制的样式文件 styles/element/index.scss(!注意这里是.scss文件在vitest.json 修改配置文件 Components({resolvers: [ElementPlusResolver(…...

大摩闭门会:250228 学习总结报告

如果图片分辨率不足,可右键图片在新标签打开图片或者下载末尾源文件进行查看 本文只是针对视频做相应学术记录,进行学习讨论使用...

线程(Thread)

一、概念 线程:线程是一个轻量级的进程 二、线程的创建 1、线程的空间 (1)进程的空间包括:系统数据段、数据段、文本段 (2) 线程位于进程空间内部 (3) 栈区独享、与进程共享文本段、…...

AI军备竞赛2025:GPT-4.5的“情商革命”、文心4.5的开源突围与Trae的代码革命

AI军备竞赛2025:GPT-4.5的“情商革命”、文心4.5的开源突围与Trae的代码革命 ——一场重塑人类认知边界的技术战争 一、OpenAI的“感性觉醒”:GPT-4.5的颠覆与争议 1.1 从“冷面学霸”到“温柔导师”:AI的情商跃迁 当用户输入“朋友放鸽子&…...

DeepSeek + 自由职业 发现新大陆,从 0 到 1 全流程跑通商业 IP

DeepSeek 自由职业 发现新大陆,从 0 到 1 全流程跑通商业 IP 商业定位1. 商业定位分析提示词2. 私域引流策略提示词3. 变现模型计算器提示词4. 对标账号分析提示词5. 商业IP人设打造提示词6. 内容选题策略提示词7. 用户人群链分析提示词8. 内容布局与转化路径设计提…...

Java进阶——常用工具类

日常开发中,Arrays、Collections 和 Objects 是非常实用的工具类,提供了丰富的功能,从而可以更高效地处理数组、集合和对象。本文将详细介绍这三个工具类的重要知识细节。 本文目录 一、 Arrays数组转集合并行排序优化Stream 支持 二、 Colle…...

【考试大纲】高级系统架构设计师考试大纲

目录 引言一、 考试说明1.考试目标2.考试要求3.考试科目设置二、 考试范围考试科目1:系统架构设计综合知识考试科目2:系统架构设计案例分析考试科目3:系统架构设计论文引言 最新的系统架构设计师考试大纲出版于 2022 年 11 月,本考试大纲基于此版本整理。 一、 考试说明…...

上位机知识篇---四种CPU架构交叉编译

文章目录 前言一、四种 CPU 架构1. x86/x86_64指令集位宽:应用场景编译工具 2. ARM指令集位宽:应用场景编译工具 3. MIPS指令集位宽应用场景编译工具 4. RISC-V指令集位宽应用场景编译工具 二、交叉编译1. 什么是交叉编译?定义应用场景 2. 交…...

隐式转换为什么导致索引失效

SELECT * FROM users WHERE id 123;这条语句失效的原因就是id是int类型的主键,比较的时候把id从int转化为字符串来比较了,而字符串的比较规则和int的比较规则明显不同,字符串是字典序比较的,还涉及到数据的长度,那为什…...

【含文档+PPT+源码】基于过滤协同算法的旅游推荐管理系统设计与实现

项目介绍 本课程演示的是一款基于过滤协同算法的旅游推荐管理系统设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套…...

OpenClaw多模态探索:Qwen3-32B驱动截图OCR与结构化数据处理

OpenClaw多模态探索:Qwen3-32B驱动截图OCR与结构化数据处理 1. 项目背景与需求场景 在日常工作中,我们经常遇到需要从截图或PDF文档中提取表格数据的情况。传统OCR工具虽然能识别文字,但往往无法保持表格结构,导致后续需要大量手…...

Abaqus模拟铝合金搅拌摩擦焊顺序热力耦合过程:残余应力仿真与最优焊接方案对比

abaqus铝合金搅拌摩擦焊,顺序热力耦合中残余应力的仿真,根据仿真温度去模拟焊后残余应力,焊接过程中不同焊接方案下的温度、瞬态应力变化曲线以及焊后残余变形,对比最优焊接方案铝合金搅拌摩擦焊(FSW)的数值…...

果园灌溉施肥控制系统升级:博图v16西门子s7-1200PLC选型与运行效果展示

果园灌溉施肥控制系统改3 博图v16,西门子s7-1200PLC带选型表 io表 运行效果视频果园灌溉3.0版本升级用上了博图V16和西门子S7-1200 PLC,这次改造最大的亮点是把施肥和滴灌控制集成到了同一个系统里。先说个实战经验:在新疆某果园调试时&…...

FreeRTOS 工程化要点:任务划分、优先级设计与 CPU 占用率监控

大家好,我是杂烩君。 今天我们来简单分享:FreeRTOS任务怎么拆、优先级怎么配、CPU 占用怎么看。1. 任务划分原则 1.1 单一职责:一个任务只干一件事 把"串口接收 数据解析 指令执行 结果反馈"全塞一个任务,解析环节一…...

基于VLFM的中文指令视觉语言导航系统设计与实现

基于VLFM的中文指令视觉语言导航系统设计与实现 一、引言 1.1 项目背景 视觉语言导航(Vision Language Navigation,VLN)是具身智能领域的核心任务之一,其目标是让智能体根据自然语言指令在三维环境中自主导航,完成路径规划与空间定位任务[reference:0]。近年来,随着大…...

3D点云检测实战指南-数据准备篇(一):Nuscenes数据集解析与应用

1. Nuscenes数据集基础解析 第一次接触Nuscenes数据集时,我被它庞大的数据量和精细的标注震撼到了。这个由Motional团队打造的自动驾驶数据集,包含了1000个真实驾驶场景,每个场景持续20秒。不同于普通数据集,Nuscenes最吸引我的是…...

Docker 快速通关

一、Docker 大致介绍 Docker 可以帮助我们完成应用的 运行(run)、构建(build) 和 分享(share)。 它的核心目标很简单: 把应用和环境打包起来让应用在不同机器上尽量保持一致方便部署、迁移和…...

保姆级教程:在Linux上用Flume 1.7.0 + Spark 2.4.7搭建实时日志流处理管道

企业级实时日志处理实战:Flume 1.7.0与Spark 2.4.7深度整合指南 在当今数据驱动的商业环境中,实时日志处理能力已成为企业技术栈的核心竞争力。想象一下电商大促期间每秒数万条的用户行为日志,或是金融交易系统中毫秒级延迟的风控信号处理——…...

PipedInputStream和PipedOutputStream的源码分析和使用方法详细分析

一、PipedOutputStream(生产者)源码——向PipedInputStream(消费者)中的缓冲区(byte[]数组)写入字节数据的输出Stream(生产者)package java.io;import java.io.*;public class Piped…...

重构macOS滚动体验:Scroll Reverser的跨设备解决方案

重构macOS滚动体验:Scroll Reverser的跨设备解决方案 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 破解多设备滚动的混乱困局 当设计师小李同时连接数位板和鼠标工…...