二叉树——另一颗树的子树

目录

1:题目分析及思路

2:代码实现和分析

1:代码

2:分析 


1:题目分析及思路

给我们两棵二叉树,分别是 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false ;

二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。

分析:我们要判断subRoot这颗树是否在root这颗树中有一颗和他完全相同的树,就如示例1:subRoot同root的左子树完全相同;示例2:subRoot就不同于root的左子树,因为root的左子树的叶子节点存在子节点,所以我们可以判断subRoot不是root的子树;

思路: 我们要如何判断subRoot是否是root的子树呢?

1):我们要判断subRoot的值是否和root的子树的值相等;

2):在判断值是否相等的同时还要判断root的子树的左右子树是否和subRoot左右子树相同;

2:代码实现和分析

1:代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */

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(q->left,p->left)
        && isSameTree(q->right,p->right);
}

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

2:分析 

这里的isSameTree函数判断了root的子树和subRoot是否是两课相同的二叉树,他们各自的左右子树是否一致,也就是判断他们在形状上以及节点个数是否相同;

1):isSubtree函数首先对树判断是否是空树,如果是空树,那么就直接返回false,说明subRoot不是root的另一颗子树;

2):接下来判断root的值是否等于subRoot的值,并且还需要调用一下isSameTree函数,如果判断结果成立说明subRoot是root的另一颗子树;

3):最后进行递归调用,判断好一层后继续向下一层进行判断

以上就是二叉处OJ—另一颗树的子树的所有分析和理解了,创作不易,求求大家点个小赞赞,感谢各位大佬们的赏脸观看,随手点个赞,养成好习惯,如有问题,感谢反馈!

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

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

相关文章

Planned independent reguirement can only be maintained via the network

背景:用户上线ps系统,物料用策略70跑需求 但是因为通用料被改了策略,改成其他的了,影响到计划独立需求了。 如果用户不需要了哪个料就会把数量改为0,或者直接删掉物料。之前建议是改成0,这样还有个记录在…

Pandas中的数据转换[细节]

今天我们看一下Pandas中的数据转换,话不多说直接开始🎇 目录 一、⭐️apply函数应用 apply是一个自由度很高的函数 对于Series,它可以迭代每一列的值操作: 二、⭐️矢量化字符串 为什么要用str属性 替换和分割 提取子串 …

如何ubuntu安装wine/deep-wine运行exe程序(包括安装QQ/微信/钉钉)

1.失败的方法: ubuntu22.04尝试下面这个链接方法没有成功, ubuntu22.04安装wine9.0_ubuntu 22.04 wine-CSDN博客 上面链接里面也提供了wine官方方法,链接如下:https://wiki.winehq.org/Ubuntu_zhcn 但是运行最后一个命令时候报…

HTTP-02

常用HTTP状态码是怎么分类的 常用的HTTP状态码是按照以下几个分类进行的: 1xx 信息类状态码:表示请求已被接收,需要进一步处理。 2xx 成功类状态码:表示请求已成功被服务器接收、理解和处理。 3xx 重定向类状态码:表…

你的生日是星期几?HTML+JavaScript帮你列出来

0 源起 上周末,大宝发现今年自己的生日不是周末,这样就不好约同学和好友一起开生日Party了,很是郁闷。一直嘀咕自己哪年的生日才是周末。 于是我用JavaScript写了一个小程序来帮她测算了未来100年中每年的生日分别是星期几。 1 设计交互界面…

RabbitMQ的Direct交换机

Direct交换机 BindingKey 在Fanout模式中,一条消息,会被所有订阅的队列都消费。但是,在某些场景下,我们希望不同的消息被不同的队列消费。这时就要用到Direct类型的Exchange。 在Direct模型下: 队列与交换机的绑定&a…

DDoS攻击的最新防御策略:从检测到缓解的全方位方案

在数字化浪潮的推动下,互联网已成为现代社会的血脉。然而,随着网络空间的不断膨胀,分布式拒绝服务(DDoS)攻击如同潜伏在暗处的猛兽,随时准备发动致命一击,威胁着网络的稳定与安全。面对这一严峻…

08 元组和集合

目录 一、元组(tuple) 1. 什么是元组 2. 查操作 3. 函数和方法 二、集合(set) 1. 什么是集合 2. 数学集合运算 一、元组(tuple) 1. 什么是元组 元组是容器型数据类型,将( )作为容器的标…

RabbitMQ入门基础篇

文章目录 安装 / 部署 RabbitMQ快速入门消息发送消息接收 WorkQueues模型消息发送消息接收能者多劳总结 交换机类型Fanout交换机声明队列和交换机绑定队列到交换机消息发送消息接收总结 Direct交换机声明队列和交换机为队列绑定相应的key消息接收消息发送 Topic交换机绑定队列消…

类与对象(1)

1.c升级了类 C 语言结构体中只能定义变量,在 C 中,结构体内不仅可以定义变量,也可以定义函数。 比如: 之前在数据结构初阶中,用 C 语言方式实现的栈,结构体中只能定义变量 ;现在以 C 方式实现&…

什么样的台灯适合学生使用?五款暑假必入护眼大路灯分享

什么样的台灯适合学生使用?现在近视越来越低龄化,戴眼镜的小朋友越来越多,每每看着自己孩子眼睛贴到作业本上写作业,我的心都会提到嗓子眼。去医院一检查,果然,远视储备即将告罄,必须要防护了&a…

1500平方米气膜羽毛球馆的造价分析—轻空间

随着全民健身热潮的兴起,气膜羽毛球馆因其良好的空气质量、恒温恒湿的环境和快捷的建设速度,受到了越来越多人的欢迎。建造一个1500平方米的气膜羽毛球馆涉及多个方面的费用,包括场地准备、设备材料、安装施工、配套设施等。轻空间将详细分析…

企业微信内嵌H5项目接入聊天功能

产品需求是,在列表中把符合条件的列表接入聊天功能,以下是详细步骤: 1.引入企业微信 <script src"https://res.wx.qq.com/wwopen/js/jsapi/jweixin-1.0.0.js"></script> 2.获取wx签名(必须要) /*** 获取wx签名**/ export function getWxJsApi(data) {r…

DC/AC电源模块:效率与可靠性兼备的能源转换解决方案

BOSHIDA DC/AC电源模块&#xff1a;效率与可靠性兼备的能源转换解决方案 随着科技的迅速发展和人工智能技术的逐渐成熟&#xff0c;各种电子设备的需求也日益增加。然而&#xff0c;这些设备往往需要不同的电压和电流来正常工作&#xff0c;而供电方式却可能不尽相同。这时&am…

前端框架中的前端打包(Bundling)和前端构建工具(Build Tools)的作用

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介前端框架中的前端打包&#xff08;Bundling&#xff09;和前端构建工具&#xff08;Build Tools&#xff09;的作用1. 引言2. 前端打包&#xff08;Bundling&#xff09;2.1 概述2.2 常见的打包工具2.2.1 Webpack2.2.2 Parcel 2.3 …

ERP收费模式是怎样的?SAP ERP是如何收费的?

一、购置SAP ERP系统的费用组成 1、软件费用 传统的ERP系统大多为许可式&#xff0c;即企业在购买ERP服务时付清所有费用&#xff0c;将ERP系统部署于自己的服务器中。根据所购买ERP系统品牌的不同&#xff0c;价格上也有一定的差异。采购ERP系统许可后&#xff0c;后续维护、…

springboot医院门诊挂号系统-计算机毕业设计源码033123

目 录 摘要 1 绪论 1.1研究背景及意义 1.2研究现状 1.3系统开发技术的特色 1.4论文结构与章节安排 2 医院门诊挂号系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.3.2数据修改流程 2.3.3数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.…

模拟题解析:

《互联网域名管理办法》第41条规定&#xff0c;域名根服务器运行机构、域名注册管理机构和域名注册服务机构应当遵守国家相关法律、法规和标准&#xff0c;落实网络与信息安全保障措施&#xff0c;配置必要的网络通信应急设备&#xff0c;建立健全网络与信息安全监测技术手段和…

3D渲染时如何提高GPU的使用率?这7点告诉你

GPU 正逐渐取代 CPU 在 3D 渲染中的地位。我们看到许多 GPU 渲染器如 Redshift、Octane、FStorm 等不断推出。以前只支持 CPU 渲染的渲染器&#xff0c;如 Arnold、V-Ray、Renderman、Keyshot 等&#xff0c;现在也开始支持 GPU 渲染。实时渲染的发展使 GPU 更受欢迎&#xff0…

V-Series Avalon-MM DMA Interface for PCIE IP核

目录 1. IP概述 2. Avalon-MM DMA Ports 3. 参数设置 3.1 系统设置 3.2 基址寄存器 (BAR) 设置 3.3 设备识别寄存器 3.4 PCI Express和PCI功能参数 3.4.1 Device Capabilities 3.4.2 Error Reporting 3.4.3 Link Capabilities 3.4.4 MSI and MSI-X Capabilities …