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

leetcode 100.相同的树

涉及到递归,最好多画图理解,希望对你们有帮助


100.相同的树

题目

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

题目链接

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

文字 和 画图 分析

  1. 思考递归进行的条件和结束的条件是什么
  2. 列举递归可能会出现的情况

针对上面两个问题进行解答:

要想找两个树的结构相同有点麻烦,换个思路,我们找它们不同

所以我们需要先对比两者的根节点,再去对比左子树和右子树

[很明显,我们采取的是 前序 遍历整个节点]

  • 在递归的时候,每一次根节点都发生变化,只要根节点对应的数值不同, 就返回 false 结束递归 (其中一种结束条件)

  • 根节点相同,我们无法判断是否两个树结构相同,只能继续递归(这是递归条件)

  • 递归期间,我们还可能碰到以下情况:

如上图:我们遇到空树了

这里还需要分两种情况讨论:

如果两个树在这个节点都是空,则返回 true (这是其中一种结束条件)

[注意:我们是先对比根,再对比左子树,最后对比右子树,所以只有左子树和右子树都为 true 才是一样的树]

如果两个树只有一个为空,则返回 false (这是其中一种结束条件)

  3. 判断的顺序问题

由于可能会遇到空树,先比较根的大小明显是不行的,所以应该把比较是否是空树的条件放前面


代码

bool isSameTree(struct TreeNode* p, struct TreeNode* q) 
{if ((p == NULL && q != NULL) || (p != NULL && q == NULL)){return false;}if (p == NULL && q == NULL){return true;}if (p->val != q->val){return false;}return isSameTree(p->left, q->left)  && isSameTree(p->right, q->right);
}

相关文章:

leetcode 100.相同的树

涉及到递归,最好多画图理解,希望对你们有帮助 100.相同的树 题目 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 题目链接…...

2021年第十届数学建模国际赛小美赛A题气道阻力的评估解题全过程文档及程序

2021年第十届数学建模国际赛小美赛 A题 气道阻力的评估 原题再现: 气道阻力的定义是通过肺气道产生单位气流所需的经肺压力的变化。更简单地说,它是嘴和肺泡之间的压力差,除以气流。影响气道阻力的因素是多方面的,我们需要探讨这…...

内网环境安装K8S1.20.11版本集群

目录 第一章.实验要求和环境 1.1.实验要求 1.2.实验环境 1.3.依赖关系处理 第二章.K8S的安装过程 2.1.初始化到集群安装成功 ------------------------------ 环境准备 ------------------------------ docker安装好了后 2.2.安装K8组件 -------------------- 部署K8…...

【前端设计模式】之策略模式

概述 在前端开发中,我们经常会遇到需要根据不同的条件或情况来执行不同的算法或行为的情况。这时,策略模式就能派上用场。策略模式是一种行为型设计模式,它将不同的算法封装成独立的策略对象,使得这些算法可以互相替换&#xff0…...

JUC包(面试常问)

1. Callable接口 类似于Runnable接口,Runnable描述的任务,不带返回值;Callable描述的任务带返回值。 public class Test {//创建线程,计算12...1000public static void main(String[] args) throws ExecutionException, Interru…...

文字处理工具Word mac软件特点

Microsoft Word mac是一款文字处理软件。它是 Microsoft office 套件的一部分,已广泛用于创建、编辑和格式化文本文档。 Word mac软件特点 改进的协作工具:使用 Microsoft Word 2021,多个用户可以同时处理一个文档,从而更轻松地与…...

把 Windows 11 装进移动硬盘:Windows 11 To Go

本篇文章聊聊如何制作一个可以“说带走就带走”的 Windows 操作系统,将 Windows11 做成能够放在 U 盘或者移动硬盘里的 WinToGo “绿色软件”。 写在前面 在《开源的全能维护 U 盘工具:Ventoy》这篇文章的最后,我提到了一个关键词 “WinToG…...

11、pytest断言预期异常

官方用例 # content of test_exception_zero.py import pytestdef test_zero_division():with pytest.raises(ZeroDivisionError):1/0# content of test_exception_runtimeerror.py import pytestdef test_recursion_depth():with pytest.raises(RuntimeError) as excinfo:def…...

Vue之数据绑定

在我们Vue当中有两种数据绑定的方法 1.单向绑定 2.双向绑定 让我为大家介绍一下吧&#xff01; 1、单向绑定(v-bind) 数据只能从data流向页面 举个例子&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"…...

druid在没有web的项目中如何查看监控

&#xff08;1&#xff09;在这个网址下载druidStat.bat文件https://github.com/alibaba/druid/blob/master/core/src/main/scripts/druidStat.bat druidStat.bat文件内容如下&#xff1a; echo offset _RUNJAVA"%JAVA_HOME%\bin\java.exe" set _TOOLSJAR"%JA…...

游戏被攻击该怎么办?游戏盾该如何使用,游戏盾如何防护攻击

随着Internet互联网络带宽的增加和多种DDOS黑客工具的不断发布&#xff0c;DDOS拒绝服务攻击的实施越来越容易&#xff0c;DDOS攻击事件正在成上升趋势。出于商业竞争、打击报复和网络敲诈等多种因素&#xff0c;导致很多商业站点、游戏服务器、聊天网络等网络服务商长期以来一…...

【基于openGauss5.0.0简单使用DBMind】

基于openGauss5.0.0简单使用DBMind 一、环境说明二、初始化tpch测试数据三、使用DBMind索引推荐功能四、使用DBMind实现SQL优化功能 一、环境说明 虚拟机&#xff1a;virtualbox操作系统&#xff1a;openEuler 20.03 TLS数据库&#xff1a;openGauss-5.0.0DBMind&#xff1a;d…...

[递归回溯]连接卡片最短路径

小游戏 题目描述 一天早上&#xff0c;你起床的时候想&#xff1a;“我编程序这么牛&#xff0c;为什么不能靠这个挣点银子呢&#xff1f;”因此你决定编写一个小游戏。 游戏在一个分割成w * h个长方格子的矩形板上进行。如图所示&#xff0c;每个长方格子上可以有一张游戏…...

初识人工智能,一文读懂强化学习的知识文集(5)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…...

视频封面提取:精准截图,如何从指定时长中提取某一帧图片

在视频制作和分享过程中&#xff0c;一个有吸引力的封面或截图往往能吸引更多的观众点击观看。有时候要在特定的时间段内从视频中提取一帧作为封面或截图。如果每个视频都手动提取的话就会耗费很长时间&#xff0c;那么如何智化能批量提取呢&#xff1f;现在一起来看下云炫AI智…...

Shopify 开源 WebAssembly 工具链 Ruvy

最近,Spotify 开源了Ruvy,一个 WebAssembly 工具链,能够将 Ruby 代码转换为 Wasm 模块。Ruvy 基于ruby.wasm, 用 Rust 实现,提升了性能并简化了 Wasm 模块的执行。 Ruvy 利用了ruby.wasm提供的 Ruby 解释器模块,并使用wasi-vfs (WASI 虚拟文件系统)将其与所有指定的 Rub…...

zxjy008- 项目集成Swagger

Swagger可以生成在线文档&#xff0c;还可以进行接口测试。 1、创建common模块(maven类型) 为了让所有的微服务子子模块都可以使用&#xff0c;可以在guli_parent父工程下面创建公共模块 1.1 在guli_parent父工程下面创建公共模块 配置&#xff1a; groupId&#xff1a;com…...

使用linux CentOS本地部署SQL Server数据库

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 安装sql server二. 局域网测试连接三. 安装cpolar内网穿透四. 将sqlserver映射…...

理解基于 Hadoop 生态的大数据技术架构

转眼间&#xff0c;一年又悄然而逝&#xff0c;时光荏苒&#xff0c;岁月如梭。当回首这段光阴&#xff0c;不禁感叹时间的匆匆&#xff0c;仿佛只是一个眨眼的瞬间&#xff0c;一年的旅程已成为过去&#xff0c;而如今又到了画饼的时刻了 &#xff01; 基于 Hadoop 生态的大数…...

【Go】Go语言基础内容

变量声明&#xff1a; 变量声明&#xff1a;在Go中&#xff0c;变量必须先声明然后再使用。声明变量使用 var 关键字&#xff0c;后面跟着变量名和类型&#xff0c;如下所示&#xff1a; var age int这行代码声明了一个名为 age 的整数变量。 变量初始化&#xff1a;您可以在声…...

华为防火墙双机热备HRP配置避坑指南:心跳线选错接口,业务秒断!

华为防火墙双机热备HRP实战&#xff1a;心跳线接口选择的黄金法则与故障规避 在金融、医疗、政务等对业务连续性要求极高的场景中&#xff0c;华为防火墙双机热备方案已成为保障网络高可用的标配。但许多工程师在部署HRP&#xff08;Huawei Redundancy Protocol&#xff09;时&…...

基于RT-Thread与TOF传感器的智能电动滑板主动刹车系统设计

1. 项目概述&#xff1a;从情怀出发的硬件升级之旅几年前&#xff0c;我和几个同学在导师的带领下&#xff0c;捣鼓出了一个基于 Arduino Uno 的电动滑板。那会儿真是干劲十足&#xff0c;白天画图、晚上调代码&#xff0c;傍晚就踩着滑板在校园里飞驰。这个滑板后来成了我的“…...

三步轻松搞定B站视频下载:跨平台免费工具BilibiliDown完整指南

三步轻松搞定B站视频下载&#xff1a;跨平台免费工具BilibiliDown完整指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_m…...

3个关键技巧:用ProperTree告别Plist编辑的繁琐与混乱

3个关键技巧&#xff1a;用ProperTree告别Plist编辑的繁琐与混乱 【免费下载链接】ProperTree Cross platform GUI plist editor written in python. 项目地址: https://gitcode.com/gh_mirrors/pr/ProperTree 你是否曾经面对macOS配置文件时感到手足无措&#xff1f;那…...

小型团队如何利用Taotoken统一管理多模型API成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 小型团队如何利用Taotoken统一管理多模型API成本 对于小型创业团队或项目组而言&#xff0c;同时接入多个大模型服务以获取不同能力…...

OpCore Simplify:黑苹果OpenCore EFI自动化配置的智能解决方案

OpCore Simplify&#xff1a;黑苹果OpenCore EFI自动化配置的智能解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 在复杂的黑苹果安装过程中&…...

GD32F303外部中断实战:从按键消抖到中断优先级配置,一个例程全搞定

GD32F303外部中断实战&#xff1a;从按键消抖到中断优先级配置 第一次接触嵌入式开发时&#xff0c;最让我困惑的就是中断系统。记得当时用按键控制LED&#xff0c;明明代码逻辑没问题&#xff0c;LED却总是莫名其妙地闪烁。后来才发现是按键抖动导致多次触发中断。今天我们就以…...

Colorful vs 其他换肤方案:为什么它是Android动态换肤的最佳选择?

Colorful vs 其他换肤方案&#xff1a;为什么它是Android动态换肤的最佳选择&#xff1f; 【免费下载链接】Colorful 基于Theme的Android动态换肤库&#xff0c;无需重启Activity、无需自定义View&#xff0c;方便的实现日间、夜间模式。 项目地址: https://gitcode.com/gh_m…...

SQLines数据库迁移工具:从零开始的完整使用指南

SQLines数据库迁移工具&#xff1a;从零开始的完整使用指南 【免费下载链接】sqlines SQLines Open Source Database Migration Tools 项目地址: https://gitcode.com/gh_mirrors/sq/sqlines SQLines是一款功能强大的开源数据库迁移工具&#xff0c;专门用于在不同数据库…...

周末造AI公司:无代码+AI工作流48小时MVP实战

1. 项目概述&#xff1a;当“周末造AI公司”成为可复现的工程实践你有没有见过这样的场景&#xff1a;周五下班前&#xff0c;三个人在咖啡馆里画了一张白板草图&#xff1b;周六上午用Notion搭好产品框架、下午用Glide连上Airtable跑通用户注册流程&#xff1b;周日下午把Chat…...