167.二叉树:另一棵树的字树(力扣)

代码解决

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    // 判断两棵树是否相同
    bool isSame(TreeNode* s, TreeNode* t) {
        if (s == nullptr && t == nullptr) {
            return true;  // 两棵树都为空,相同
        }
        if (s == nullptr || t == nullptr) {
            return false;  // 一棵树为空,一棵树非空,不相同
        }
        if (s->val != t->val) {
            return false;  // 根节点值不同,不相同
        }
        // 递归检查左右子树
        return isSame(s->left, t->left) && isSame(s->right, t->right);
    }

    // 判断 subRoot 是否是 root 的子树
    bool isSubtree(TreeNode* root, TreeNode* subRoot) {
        if (root == nullptr) {
            return subRoot == nullptr;  // 如果 root 为空,subRoot 也必须为空才是子树
        }
        // 如果当前节点的子树和 subRoot 相同,返回 true
        if (isSame(root, subRoot)) {
            return true;
        }
        // 递归检查左子树和右子树
        return isSubtree(root->left, subRoot) || isSubtree(root->right, subRoot);
    }
};

解释:

  1. isSame 函数

    • isSame 函数用于判断两棵树 st 是否完全相同。
    • 如果两棵树都为空,则返回 true
    • 如果一棵树为空而另一棵树非空,则返回 false
    • 如果两棵树的根节点值不同,则返回 false
    • 递归检查两棵树的左子树和右子树是否相同。
  2. isSubtree 函数

    • isSubtree 函数用于判断 subRoot 是否是 root 的子树。
    • 如果 root 为空,则只有当 subRoot 也为空时才返回 true
    • 首先检查当前节点的子树是否和 subRoot 相同。
    • 如果不相同,递归检查 root 的左子树和右子树是否包含 subRoot

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

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

相关文章

PostgreSQL 16 小课推广

PostgreSQL 16 小课推广 1. PostgreSQL 16 基础知识 PostgreSQL 16 的特点与优势安装与配置PostgreSQL 16数据库和表的基本概念与操作数据类型与约束SQL 语言基础 2. 数据查询与操作 SELECT 语句的使用聚合函数与分组查询子查询与连接查询数据插入、更新与删除视图与索引的…

二维码生成

摘要 QRCoder 是一个功能强大的 C# 库,用于生成 QR 码。QR 码是一种二维码,可以存储大量的信息,并且具有良好的识别率和存储容量。使用 QRCoder,用户可以方便地生成各种类型的 QR 码,包括 URL、文本、电话号码、电子邮…

<网络安全VIP>第二篇《工业控制软件》

1 PLC PLC,(Programmable Logic Controller),可编程逻辑控制器(PLC)是种专门为在工业环境下应用而设计的数字运算操作电子系统。 2 DCS 四、DCS的发展趋势 一、DCS的基本定义 DCS是分布式控制系统(Distributed Control System)的英文缩写,在国内自控行业又称之为集…

运放IC:HC358:1MHz,轨到轨I/O,低功耗运算放大ic,供应:传感器压力传感放大器移动通讯设备音频输出便携应用烟雾监测电池驱动的设备

运放IC: HC358:1MHz,轨到轨I/O,低功耗运算放大ic 概述:HC358是一款轨到轨输入输出,电压反馈运算放大 器。输入共模范围和输出摆幅较大,最低工作电源电压仅 为2.1V,最高电压可达5.5V。工作环…

冥想第一千一百七十八天

1.周末,早上先骑着电车到绿谷公园拿了姐给的精油,40分钟到家。 2.早上带着媳妇吃了饭,等丈母娘和小侄子。一起去荥泽水乡特别的推荐。感受特别好玩。 3.晚上带着丈母娘和小侄子吃了饭,给送到中原福塔。回来都都12点了。 4.累的&am…

【Nacos】docker-compose启动nacos v2.2.3,启动时修改默认密码不使用naocs

1. 背景 出于安全考虑,我司DevOps平台自动部署的容器化nacos密码不能是弱密码或默认值 但是nacos-v2.2.3官方镜像启动后会初始化nacos用户密码为nacos,修改启动时的变量并没有生效。 2. 部署验证 2.1 yml文件如下 注意将derby库的初始化文件挂载出来…

群体优化算法---蜂群优化算法应用于数据挖掘

介绍 蜂群优化算法(Bee Algorithm, BA)及其变种主要模拟蜜蜂的觅食行为,以解决复杂的优化问题。这类算法通过蜜蜂之间的信息交流和协作来探索解空间,寻找全局最优解。主要应用于参数优化,结构优化,机器学习…

初讲解运算符重载

运算符的重载 运算符重载基本概念运算符重载入门技术推演运算符重载碰上友元函数运算符重载的限制 什么是运算符重载? 运算符重载基本概念 所谓重载,就是重新赋予新的含义。 函数重载就是对一个已有的函数赋予新的含义,使之实现新功能&#x…

[Algorithm][动态规划][回文串问题][回文子串][最长回文子串][分割回文串Ⅳ]详细讲解

目录 0.原理讲解1.回文子串1.题目链接2.算法原理详解3.代码实现 2.最长回文子串1.题目链接3.代码实现 3.分割回文串 IV1.题目链接2.算法原理详解3.代码实现 0.原理讲解 动态规划能够将所有的子串是否是回文的信息,保存在dp表里面状态表示一般经验:以[i,…

【Redis】redis高阶-使用zset实现延时队列

Hi,大家好,我是抢老婆酸奶的小肥仔。 最近在使用redis时,就想能不能用其实现消息队列?也在网上看了下其他小伙伴写的实现,结合自身业务实现了如下消息队列,希望对大家有用。 废话不多说,直接开撸。 1、为…

Kafka之Broker原理

1. 日志数据的存储 1.1 Partition 1. 为了实现横向扩展,把不同的数据存放在不同的 Broker 上,同时降低单台服务器的访问压力,我们把一个Topic 中的数据分隔成多个 Partition 2. 每个 Partition 中的消息是有序的,顺序写入&#x…

【机器学习】Qwen1.5-14B-Chat大模型训练与推理实战

目录 一、引言 二、模型简介 2.1 Qwen1.5 模型概述 2.2 Qwen1.5 模型架构 三、训练与推理 3.1 Qwen1.5 模型训练 3.2 Qwen1.5 模型推理 四、总结 一、引言 Qwen是阿里巴巴集团Qwen团队的大语言模型和多模态大模型系列。现在,大语言模型已升级到Qwen1.5&…

分布式session共享配置

目录 1、spring-session 1.1 添加依赖 1.2 spring-mvc.xml配置文件 1.3 web.xml 2、tomcat配置session、共享 2.1 Tomcat配置 2.2 Web.xml配置 1、spring-session 官方文档:https://docs.spring.io/spring-session/docs/1.3.0.RELEASE/reference/html5/ 1.…

【vue-7】图片轮播

实现功能&#xff1a; 1、通过button实现图片轮训播放&#xff1b; 2、通过标签列表项实现图片的播放&#xff1b; 示例代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"vi…

AI网络爬虫:对网页指定区域批量截图

对网页指定区域批量截图&#xff0c;可以在deepseek的代码助手中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;一步一步的思考&#xff0c;完成一个对网页指定区域截图的python脚本的任务&#xff0c;具体步骤如下&#xff1a; 设置User-Agent: Mozilla/5.0 (…

【AIOT-Robot】3D pos 相关

1. Mediapipe 3D detection 使用移动增强现实(AR)会话数据(session data),开发了新的数据pipeline。大部分智能手机现在都具备了增强现实的功能,在这个过程中捕捉额外的信息,包括相机姿态、稀疏的3D点云、估计的光照和平面。 利用相机的姿势、检测到的平面、估计的照明,来生…

JVM学习-监控工具(一)

使用数据说明问题&#xff0c;使用知识分析问题&#xff0c;使用工具处理问题 无监控&#xff0c;不调优&#xff01; 命令行工具 在JDK安装目录下&#xff0c;可以查看到相应的命令行工具&#xff0c;如下图 jps(Java Process Status) 显示指定系统内所有的Hotpot虚拟机…

网络工程师----第四十七天

1、请简述super vlan和sub vlan的区别&#xff1f; 2、请简述mux vlan 中不同vlan的特点&#xff1f; 3、请基于工作原理简述GVRP协议中三种接口模式的特点&#xff1f; 4、请简述STP的选举过程&#xff1f; 5、两台交换机在不增加成本的情况下为提高链路带宽和可靠性采用链路聚…

STM32与陶晶驰串口屏交互

1、串口屏界面设计 1.新建工程 保存位置自定义&#xff0c;作为一个合格的嵌入式工程师要有路径下没有中文的情况并命名。 选择自己串口屏对应的芯片&#xff0c;一般屏幕背面会有&#xff0c;也可以查看资料。 选择显示方向&#xff0c;自行选择。按照自己的爱好 右边可对当前…

Android约束布局ConstraintLayout的使用

Android引入约束布局的目的是为了减少布局层级的嵌套&#xff0c;从而提升渲染性能。约束布局综合线性布局、相对布局、帧布局的部分功能&#xff0c;缺点也很明显&#xff0c;就是可能要多写几行代码。所以约束布局使用时&#xff0c;还得综合考虑代码量。提升性能也并不一定非…