【力扣刷题实战】另一棵树的子树

大家好,我是小卡皮巴拉

文章目录

目录

力扣题目: 另一棵树的子树

题目描述

示例 1:

示例 2:

解题思路

问题理解

算法选择

具体思路

解题要点

完整代码(C语言)

兄弟们共勉 !!! 


每篇前言

博客主页:小卡皮巴拉

咱的口号:🌹小比特,大梦想🌹

作者请求:由于博主水平有限,难免会有错误和不准之处,我也非常渴望知道这些错误,恳请大佬们批评斧正。

力扣题目: 另一棵树的子树

原题链接:  另一棵树的子树

题目描述

给你两棵二叉树 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

解题思路

问题理解

题目要求检查二叉树 root 中是否包含与 subRoot 具有完全相同结构和节点值的子树。

算法选择

使用递归方法,通过遍历 root 并在每个节点处检查是否与 subRoot 相同。

具体思路

  1. 定义一个辅助函数 isSameTree,用于检查两棵树是否完全相同。

  2. 在主函数 isSubtree 中,对 root 进行遍历,并对每个节点调用 isSameTree 进行检查。

  3. 如果在某个节点处找到了与 subRoot 相同的子树,则返回 true

  4. 如果遍历完所有节点仍未找到,则返回 false

解题要点

  1. 定义树节点结构typedef struct TreeNode TreeNode; 已经在代码开头定义。

  2. 编写 isSameTree 函数:比较两棵树 p 和 q 是否完全相同。

  3. 编写 isSubtree 函数:递归遍历 root 并调用 isSameTree 进行检查。

完整代码(C语言)

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
 typedef struct TreeNode TreeNode;
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
    if(p == NULL && q == NULL)
    {
        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)
    {
        return false;
    }
    if(isSameTree(root,subRoot))
    {
        return true;
    }
    //root和subRoot不是相同的树——subRoot不是root的子树
    //继续递归
    return isSubtree(root->left,subRoot)||isSubtree(root->right,subRoot);
}

兄弟们共勉 !!! 

码字不易,求个三连

抱拳了兄弟们!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/904439.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu 24 (wayland)如何实现无显示器远程桌面

ubuntu 24默认采用的是wayland而非x11,查过文档vnc对wayland的支持不是很好,折腾了好久,弄了一个如下的方案供参考: 硬件条件 需要一个显卡欺骗器或者可以接HDMI口作为视频信号源输出的设备。 将ubuntu的主机的HDMI输出接到该硬…

StructRAG简介

StructRAG是一种新型的框架,旨在提升大型语言模型(LLMs)在知识密集型推理任务中的性能。它通过推理时的混合信息结构化机制,根据任务需求以最合适的格式构建和利用结构化知识。 以下是StructRAG的核心组成部分和工作流程&#xff…

聚类分析算法——K-means聚类 详解

K-means 聚类是一种常用的基于距离的聚类算法,旨在将数据集划分为 个簇。算法的目标是最小化簇内的点到簇中心的距离总和。下面,我们将从 K-means 的底层原理、算法步骤、数学基础、距离度量方法、参数选择、优缺点 和 源代码实现 等角度进行详细解析。…

【蓝桥杯选拔赛真题77】python计算小球 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析

目录 python计算小球 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python计算小球 第十五届蓝桥杯青少年组python比赛选拔赛真题 一、题目要…

VMware 17 安装RedHat7.0

1.创建新的虚拟机,选择典型安装,【下一步】 2.选择“稍后安装操作系统(S)”,【下一步】 注:选择“安装程序光盘映像文件(iso)(M)”这一项,虚拟机…

事务的原理、MVCC的原理

事务特性 数据库事务具有以下四个基本特性,通常被称为 ACID 特性: 原子性(Atomicity):事务被视为不可分割的最小工作单元,要么全部执行成功,要么全部失败回滚。这意味着如果事务执行过程中发生…

别玩了!软考初级网络管理员无非就这23页纸!背完稳!

添加图片注释,不超过 140 字(可选) 添加图片注释,不超过 140 字(可选) 考点2、子网划分 【考法分析】 本考点的基本考法是给出一个IP网段,同时提出需要划分多少个子网,或每个子网…

技术干货|如何巧妙利用数字孪生技术助力口腔保健分析

行业: 口腔医疗 挑战: 传统方法缺乏预测口腔内受力状态,也很难从患者方面获得反馈,因此将口腔扫描、牙齿形状/位置识别和正畸数字模型生成的过程数字化是一个重大机会。 正畸治疗是牙科中最大的类别之一,随着病例的…

WPF+MVVM案例实战(十一)- 环形进度条实现

文章目录 1、运行效果2、功能实现1、文件创建与代码实现2、角度转换器实现3、命名空间引用3、源代码下载1、运行效果 2、功能实现 1、文件创建与代码实现 打开 Wpf_Examples 项目,在Views 文件夹下创建 CircularProgressBar.xaml 窗体文件。 CircularProgressBar.xaml 代码实…

从壹开始解读Yolov11【源码研读系列】——Data.Base.py.BaseDataset:可灵活改写的数据集加载处理基类

目录 一、base.BaseDataset 1.__init__类初始化 2.get_img_files根据地址获得图片详细地址 3.get_labels(自定义)获取标签数据 4. update_labels指定类别和单分类设定 5.set_rectangle开启批量矩阵训练 6.cache_images加载图片进程可视化 7.load_image内…

超出人类思维的「系统0」:AI正在创造一种新的思维方式吗?

在大众的认知中,人类的思维分为系统 1(System 1,直觉的、快速的、无意识的、自动思考)和系统 2(System 2,有逻辑的、缓慢的、有意识的、计划和推理)。 如今,一种不同于 System 1 和…

华为ICT题库-云服务部分

1651、关于创建数据盘镜像的约束条件,以下说法错误的是?(云服务考点) (A)使用云服务器的数据盘创建数据盘镜像时,要确保该云服务器必须有系统盘 (B)通过外部文件创建数据盘镜像必须明确指定操作系统类型 (C)使用云服务…

阿里旺旺ActiveX控件ImageMan溢出

Welcome to Windows pwn~ 环境搭建: 虚拟机:winxp sp3 32位 再装一些常用的tools,olldby,immundbg,windbg这些。 漏洞版本的软件:AliIM2010_taobao(6.50.00C) PoC crash 分析 运行PoC,win…

新闻记者职业资格考试备考资料包分享(重要考点)!

24年新闻记者职业资格考试时间:11月2日,今天给大家整理的是新闻记者职业资格考试备考资料包(重要考点)23版,可以更有重点的进行复习~ 「新闻记者职业资格」 资料链接: https://pan.quark.cn/s/965044c95…

三菱FX5U CPU 存储卡引导运行操作

在CPU模块的电源0FF->ON时或复位时,将保存在SD存储卡内的文件传送至CPU模块自动判别的传送目标存储器。 引导运行的步骤如下所示。 1、进行引导文件设置。 2、安装SD存储卡。 3、将引导文件设置及引导文件写入至SD存储卡中。 4、CPU模块的电源0FF→>0N或复位…

【学习】ZLMediaKit试用

服务端准备 下载ZLMediaKit压缩包,解压 /linux/Release路径下启用MediaServer ./MediaServer -d &/linux/Release路径下config.ini更改配置 也可以将进入web控制台 rtmp默认端口1935, rtsp默认端口554,http默认端口80, SSL默认端口443 进入web控制台 http…

域渗透AD渗透攻击利用 python脚本攻击之IPC连接 以及 python生成exe可执行程序讲解方式方法

Python脚本批量检测ipc连接 import os, timeips [192.168.1.121,192.168.1.8 ] users {administrator,hack,hack1,test, } passs {123qq.com,456qq.com,Admin12345 } for ip in ips:for user in users:for mima in passs:exec1 "net use \\" "\\" i…

基于springboot小区物联网平台源码

小区物联网平台是一个专为小区硬件管理设计的物联网管理平台,其核心功能在于与各大厂商的门禁设备、道闸设备、监控设备、智能锁以及充电桩等进行高效对接。该平台支持HTTP、MQTT、ComNet等多种协议,以便轻松实现与各大小区云平台的互联互通。 目前&…

Moveit-轨迹优化

mvoeit轨迹周期不固定的问题,以及我们希望对moveit规划出来的轨迹进一步优化的项目需求 首先看一个关节角运动的python函数,通过这个函数我们可以实现机械臂从当前位姿运动到设定位姿的功能 #用于控制机械臂移动到目标位置,接受三个参数 #t…

高效实现用友BIP与吉客云的数据集成方案案例

用友BIP数据集成到吉客云的技术案例分享 在企业信息化建设中,数据的高效流动和准确对接是实现业务协同的重要基础。本文将重点介绍一个实际运行的系统对接集成案例:如何通过轻易云数据集成平台,将用友BIP的数据无缝集成到吉客云中&#xff0…