另一棵树的子树
目录
题目
思路
代码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讲。 堆放砖块…...
3分钟掌握Windows音频路由:让每个程序都有专属音频输出 [特殊字符]
3分钟掌握Windows音频路由:让每个程序都有专属音频输出 🎧 【免费下载链接】audio-router Routes audio from programs to different audio devices. 项目地址: https://gitcode.com/gh_mirrors/au/audio-router 你是否曾经遇到过这样的烦恼&…...
如何通过SpacetimeGaussians实现实时动态视图合成:从安装到应用全指南
如何通过SpacetimeGaussians实现实时动态视图合成:从安装到应用全指南 【免费下载链接】SpacetimeGaussians [CVPR 2024] Spacetime Gaussian Feature Splatting for Real-Time Dynamic View Synthesis 项目地址: https://gitcode.com/gh_mirrors/sp/SpacetimeGau…...
基于Dify和RAG技术的AI智能客服准确率优化实战
在构建基于Dify的AI智能客服时,我们常常会遇到一个核心挑战:模型给出的回答听起来头头是道,但仔细一核对,却发现它“一本正经地胡说八道”。例如,在一个医疗健康咨询场景中,用户询问“布洛芬和头孢可以一起…...
快速部署Super Qwen Voice World:复古像素风语音合成中心体验
快速部署Super Qwen Voice World:复古像素风语音合成中心体验 1. 项目简介与核心价值 Super Qwen Voice World是一个基于Qwen3-TTS技术构建的语音合成平台,它将传统的语音合成过程转化为一场充满趣味的8-bit游戏冒险。这个项目最吸引人的特点是&#x…...
NaViL-9B图文问答教程:从单图理解到多图对比分析的进阶用法
NaViL-9B图文问答教程:从单图理解到多图对比分析的进阶用法 1. 认识NaViL-9B多模态模型 NaViL-9B是一款原生支持多模态交互的大语言模型,能够同时处理文本和图像输入。与传统的纯文本模型不同,它可以直接"看懂"图片内容ÿ…...
实时手机检测-通用模型教程:如何用Gradio搭建检测界面
实时手机检测-通用模型教程:如何用Gradio搭建检测界面 1. 引言与模型概述 1.1 手机检测的应用价值 在现代计算机视觉应用中,手机检测是一个具有广泛实用场景的技术。从智能监控系统中的打电话行为识别,到公共场所的手机使用管理࿰…...
从单张图片到实时视频流:给RK3588上的YOLOv11推理Demo加个OpenCV‘外挂’
从单张图片到实时视频流:RK3588上YOLOv11与OpenCV的高效整合实战 当开发者首次在RK3588上成功运行YOLOv11的静态图片推理时,那种成就感往往伴随着新的渴望——如何让这个模型"活"起来?本文将带你突破单帧测试的局限,通过…...
SDMatte提示词(Prompt)高级使用技巧:引导模型优化抠图边缘
SDMatte提示词(Prompt)高级使用技巧:引导模型优化抠图边缘 1. 为什么提示词对抠图质量至关重要 你可能已经发现,同样的图片在不同提示词下,SDMatte生成的蒙版质量会有明显差异。这就像给修图师不同的工作指令——说&…...
开发环境神器:OpenClaw+GLM-4.7-Flash自动补全错误日志解决方案
开发环境神器:OpenClawGLM-4.7-Flash自动补全错误日志解决方案 1. 为什么需要日志自动诊断系统 作为一个长期与开发环境打交道的程序员,我每天要面对数百行日志输出。最头疼的场景莫过于:当你在IDE中调试时,突然蹦出一段晦涩的错…...
终极指南:如何在Quarkus中配置和使用JVM系统属性
终极指南:如何在Quarkus中配置和使用JVM系统属性 【免费下载链接】quarkus Quarkus: Supersonic Subatomic Java. 项目地址: https://gitcode.com/GitHub_Trending/qu/quarkus Quarkus作为一款针对Java优化的现代框架,提供了灵活且高效的系统属性…...
