另一棵树的子树
目录
题目
思路
代码1 :相同的树
代码二:解题
注意点
题目
给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。
二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。
示例 1:

输入:root = [3,4,5,1,2], subRoot = [4,1,2] 输出:true
示例 2:

输入:root = [3,4,5,1,2,null,null,null,null,0], subRoot = [4,1,2] 输出:false
思路
何为子树:
二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。
明白何为子树之后,只需要让root的所有子树,与subRoot进行比较,判断是不是相同的树即可。
代码1 :相同的树
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {//空节点也需要判断if (p == NULL && q == NULL) //只有当树全部走完之后,才能return true;return true;//此处:至少有一个不为空树if (p == NULL || q == NULL)return false;//全不为空//采用前序遍历法if (p->val != q->val) //节点return false;return isSameTree(p->left, q->left) //左树&& isSameTree(p->right, q->right); //右树}
代码二:解题
bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot){if (root == NULL) //题目中subroot不为空。 当root为空时,一定返回falsereturn false;if (isSameTree(root, subRoot)) //是相同的树。bool类型可以直接当if条件判断值return true;return isSubtree(root->left, subRoot) //不断调用 本 函数的过程,就是不断递归遍历二叉树的过程|| isSubtree(root->right, subRoot);}
注意点
1.
root树上的节点数量范围是[1, 2000]subRoot树上的节点数量范围是[1, 1000]
因此
if (root == NULL) //题目中subroot不为空。 当root为空时,一定返回false
return false;
root为空,可以直接返回false
root不断递归,当到空时,一定不会是相同的树。
2.
有了判断的函数,返回类型是bool类型,可以直接调用此函数
if (isSameTree(root, subRoot)) //是相同的树。bool类型可以直接当if条件判断值
return true;
3.
return isSubtree(root->left, subRoot) //不断调用 本 函数的过程,就是不断递归遍历二叉树的过程
|| isSubtree(root->right, subRoot);
递归时,调用的是本函数,而不是子函数。
递归调用本函数的过程中,就完成二叉树的不断“扩枝”。
对于递归调用而言,其形状可以理解为二叉树的扩枝过程,只不过不断扩枝的过程中,先走一边,再走另一边。
遍历调用时,可以存在前序、中序、后续三种情况。
这三种情况,可以理解为递归调用的“思想”, 而不是“死代码”。
相关文章:
另一棵树的子树
目录 题目 思路 代码1 :相同的树 代码二:解题 注意点 题目 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。 二叉树 tr…...
【hive】单节点搭建hadoop和hive
一、背景 需要使用hive远程debug,尝试使用无hadoop部署hive方式一直失败,无果,还是使用有hadoop方式。最终查看linux内存占用6GB,还在后台运行docker的mysql(bitnami/mysql:8.0),基本满意。 版本选择: &a…...
Aurora 协议学习理解与应用——Aurora 8B10B协议学习
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Aurora 8B10B协议学习之一,理解协议 概述8B10B数据发送和接收Symbol-Pairs传输调度用户PDU传输过程用户PDU接收过程 流控自然流量控制操作自然流量控制延迟自然流…...
Vue基础使用之V-Model绑定单选、复选、动态渲染选项的值
这里要说明一下,在v-model 绑定的值是id还是value是和<option>中的v-bind保持一致的,如第四个,如果是 <option :value"op[1]" 那v-model绑定的就是数组第二项的值2,4,6 如果是 <option :va…...
分析ARP解析过程
1、实验环境 主机A和主机B连接到交换机,并与一台路由器互连,如图7.17所示,路由器充当网关。 图7.17 实验案例一示意图 2、需求描述 查看 ARP 相关信息,熟悉在PC 和 Cisco 设备上的常用命令,设置主机A和主机B为同一个网段网关设置为路由接…...
为硬刚小米SU7,华为智界S7整出了「梅开二度」操作
如今国产中大型新能源轿车市场,在小米 SU7 加入后,可算彻底活了过来。 过去几年,咱们自主新能源品牌在 20-30 万元级轿车上发力明显不足,老牌车厂比亚迪汉几乎以一己之力扛起销量担当。 随着新能源汽车消费升级、竞争加剧&#x…...
408数据结构,怎么练习算法大题?
其实考研的数据结构算法题是有得分技巧的 得分要点 会写结构定义(没有就自己写上)写清楚解题的算法思想描述清楚算法实现最后写出时间和空间复杂度 以上这四步是完成一道算法题的基本步骤,也是其中得分的主要地方就是后面两步。但是前面两…...
imgcat 工具
如果经常在远程服务器或嵌入式设备中操作图片,要查看图片效果,就要先把图片dump到本地,比较麻烦。可以使用这个工具,直接在终端上显示。类似于这种效果。 imgcat 是一个终端工具,使用 iTerm2 内置的特性,允…...
Anaconda换清华源
1. 查看conda配置文件 sudo vim ~/.condarc2. 删除~/.condarc文件内容 使用vim中的dd命令 3. 打开并复制清华源的地址粘贴到~/.condarc文件中 https://mirrors4.tuna.tsinghua.edu.cn/help/anaconda/ channels:- defaults show_channel_urls: true default_channels:- https…...
react使用npm i @reduxjs/toolkit react-redux
npm i reduxjs/toolkit react-redux 创建一个 store文件夹,里面创建index.js文件和子模块文件夹 index,js文件写入以下代码 import {configureStore} from reduxjs/toolkit // 导入子模块 import counterReducer from ./modules/one import two from ./modules/tw…...
Nessus【部署 03】Docker部署漏洞扫描工具Nessus详细过程分享(下载+安装+注册+激活)文末福利
Docker部署漏洞扫描工具Nessus 1.安装2.配置2.1 添加用户2.2 获取Challenge code2.3 获取插件和许可证2.4 注册 3.使用4.进阶 整体流程: 1.安装 # 1.查询镜像 docker search nessus# 2.拉取镜像 docker pull tenableofficial/nessus# 3.启动镜像【挂载目录用于放置…...
2023年看雪安全技术峰会(公开)PPT合集(11份)
2023年看雪安全技术峰会(公开)PPT合集,共11份,供大家学习参阅。 1、MaginotDNS攻击:绕过DNS 缓存防御的马奇诺防线 2、从形式逻辑计算到神经计算:针对LLM角色扮演攻击的威胁分析以及防御实践 3、TheDog、0…...
Docker仅需3步搭建免费私有化的AI搜索引擎-FreeAskInternet
简介 FreeAskInternet 是一个完全免费、私有且本地运行的搜索引擎,并使用 LLM 生成答案,无需 GPU。用户可以提出问题,系统会进行多引擎搜索,并将搜索结果合并到ChatGPT3.5 LLM中,并根据搜索结果生成答案。 什么是 Fr…...
线程安全的单例模式
使用 synchronized 修饰 getInstance 方法 确保了只有一个线程可以同时访问 getInstance 方法。这意味着在任何时候只有一个线程可以执行 getInstance() 方法,从而避免了多个线程同时创建多个实例的情况,因此是线程安全的。 public class ClientUtil {…...
OpenHarmony实战开发-Grid和List内拖拽交换子组件位置。
介绍 本示例分别通过onItemDrop()和onDrop()回调,实现子组件在Grid和List中的子组件位置交换。 效果图预览 使用说明: 拖拽Grid中子组件,到目标Grid子组件位置,进行两者位置互换。拖拽List中子组件,到目标List子组件…...
设计模式:时序图
设计模式:时序图 设计模式:时序图时序图元素(Sequence Diagram Elements)角色(Actor)对象(Object)生命线(Lifeline)控制焦点(Focus of Control&am…...
前端性能监控(面试常见)
1. 用户体验优化 2. Web Vitals提取了几个核心网络指标 哇一头死 FCL 三大指标 FID被 INP干点 Largest Contentful Paint (LCP):最大内容绘制 衡量加载性能。 为了提供良好的用户体验,LCP 必须在网页首次开始加载后的 2.5 秒内发生。Interaction to Ne…...
react17 + antd4 如何实现Card组件与左侧内容对齐并撑满高度
在使用antd进行页面布局时,经常会遇到需要将内容区域进行左右分栏,并在右侧区域内放置一个或多个Card组件的情况。然而,有时我们会发现右侧的Card组件并不能与左侧的栏目对齐,尤其是当左侧栏目高度动态变化时。本文将介绍如何使用…...
Rust入门-Hello World
1、安装 在 Linux 或 macOS 上安装 rustup 打开终端并输入下面命令: $ curl --proto https --tlsv1.2 https://sh.rustup.rs -sSf | sh如果安装成功,将出现下面这行: Rust is installed now. Great!2、更新 $ rustup self uninstall3、卸…...
堆放砖块-第12届蓝桥杯选拔赛Python真题精选
[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第47讲。 堆放砖块…...
Next.js App Router 实战:从官方 Playground 探索现代 Web 开发最佳实践
1. 项目概述与定位最近在捣鼓 Next.js 的几个新特性,比如 Server Actions、并行路由、拦截路由这些,光看文档总觉得隔靴搔痒,想找个能上手实操、快速验证想法的环境。这时候,Vercel 官方维护的next-app-router-playground项目就成…...
Markdown元数据自动化管理:mdac-filler工具核心功能与实战指南
1. 项目概述:一个为Markdown文档自动填充元数据的工具如果你经常用Markdown写文档、博客或者项目README,肯定遇到过这样的场景:每次新建一个文件,都得手动去文件头部敲一堆“Front Matter”元数据,比如标题、日期、标签…...
CMOS闩锁效应原理与防护设计实践
1. 闩锁效应基础原理剖析闩锁效应(Latch-up)是CMOS集成电路设计中最为棘手的可靠性问题之一。这种现象本质上是由芯片内部寄生形成的PNP-NPN晶体管对构成的晶闸管结构(SCR)被意外触发导致的。当特定条件满足时,这些寄生元件会形成正反馈回路,导致电源与地…...
Dify数据库查询插件:让AI应用轻松连接业务数据的实战指南
1. 项目概述与核心价值 如果你正在使用 Dify 构建企业级 AI 应用,并且经常需要让 AI 助手去查询数据库里的数据——比如让 LLM 帮你分析销售报表、查找用户信息或者生成业务洞察——那么你很可能遇到过这样的痛点:Dify 本身并不直接支持数据库连接。你需…...
为什么你的DeepSeek Terraform配置总在CI/CD中崩溃?5个被官方文档隐藏的state锁机制真相
更多请点击: https://intelliparadigm.com 第一章:为什么你的DeepSeek Terraform配置总在CI/CD中崩溃?5个被官方文档隐藏的state锁机制真相 DeepSeek 与 Terraform 的深度集成虽提升了 AI 基础设施编排能力,但其 state 锁行为在 …...
3步精通UE4SS游戏Mod开发:从注入到实战完全指南
3步精通UE4SS游戏Mod开发:从注入到实战完全指南 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_mirrors/re/RE-UE4SS UE…...
实战指南:如何通过Vosk API实现95%+准确率的离线语音识别系统
实战指南:如何通过Vosk API实现95%准确率的离线语音识别系统 【免费下载链接】vosk-api Offline speech recognition API for Android, iOS, Raspberry Pi and servers with Python, Java, C# and Node 项目地址: https://gitcode.com/GitHub_Trending/vo/vosk-ap…...
嵌入式系统开发实战:从架构设计到量产部署的工程指南
1. 从一场顶级技术盛会看嵌入式开发的演进与实战十多年前,也就是2010年的6月,芝加哥嵌入式系统大会(ESC Chicago)的第一天,被当时的媒体形容为“全明星阵容”的聚会。Dan Saks、Christian Legare、Bill Gatliff、David…...
利用Taotoken的API兼容性将现有基于OpenAI的应用快速迁移上线
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用Taotoken的API兼容性将现有基于OpenAI的应用快速迁移上线 对于已经投入开发并依赖OpenAI官方API的应用,切换到新的…...
计算机视觉导航评估框架:从算法指标到用户体验的完整闭环
1. 项目概述:为什么我们需要一个“导航评估框架”?在计算机视觉辅助视障人士导航这个领域,我见过太多“实验室里的英雄”和“现实中的矮子”。一个算法在精心布置的走廊里识别障碍物准确率高达99.9%,但一到人潮涌动的火车站广场&a…...
