AcWing 37. 树的子结构

EC20模块实战:5步搞定MQTT连接阿里云IoT(附常见错误排查) 本文详细介绍了使用EC20 4G模块通过AT指令连接阿里云IoT平台的完整实战流程。文章以智能农业项目为背景,从硬件接线、网络注册、PDP激活,到MQTT连接配置、一型一密动态注册及数据收发,提供了清晰的5步操作指南,并重点附上了常见错误排查方法,帮助开发者快速实现稳定可靠的物联网设备上云。 阅读详情

题目要求实现两个过程,一个是判断是否为子结构,另一个是对A的遍历。

假如题目规定空树是任何树的子结构,这两个过程可以在同一个递归函数中完成。如果B的根与A的某个子树的根数值相同,则判断左右子树是否同时满足要求。否则的话对A做遍历依次验证。

然而题目规定空树不是任何树的子结构,那么一个递归函数已经不能满足要求了。因为递归的出口并不统一。B一上来根节点就为空,和子结构判断时遍历到B子树根节点为空的处理方式是不一样的。因此这里至少需要两个递归函数,一个用来负责验证子结构,另一个则是用来选取A的节点。

进一步的讲解和时间复杂度的分析见题解。

具体代码如下:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool check(TreeNode *root1, TreeNode *root2){
        if(!root2) return true;
        if(!root1 || root1 -> val != root2 -> val) return false;
        return check(root1 -> left, root2 -> left) && check(root1 -> right, root2 -> right);
    }

    bool hasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {
        if(!pRoot1 || !pRoot2) return false;
        if(check(pRoot1, pRoot2)) return true;
        return hasSubtree(pRoot1 -> left, pRoot2) || hasSubtree(pRoot1 -> right, pRoot2);
    }
};

 

Web前端开发技术:实验14-16 实验14 1. 编写JavaScript程序实现“九九乘法口诀”表,如图14-40所示。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>九九乘法表</title> </head> <body> <h1>九九乘法表</h1> </body> <scri 阅读详情

相关推荐

Halcon实战:5分钟搞定工业零件中的圆孔检测(附完整代码)

本文详细解析了如何利用Halcon的hough_circle算法在5分钟内高效完成工业零件中的圆孔检测。通过优化图像采集、智能预处理和参数化边缘检测,解决了金属反光、油污干扰等工业场景常见问题,并提供了完整的代码示例和实战案例,显著提升检测精度和效率。

weixin_29061997的博客 239

【ACWing】37. 树的子结构

https://www.acwing.com/problem/content/35/输入两棵二叉树AAA,BBB,判断BBB是不是AAA的子结构。我们规定空树不是任何树的子结构。数据范围: 每棵树的节点数量[0,1000][0,1000][0,1000]。先对两棵树进行先序序列化,序列化完成之后做一次KMP匹配即可。注意这里是“子结构”而不是子树,所以空节点虽然仍然需要序列化(这可以保证结构吻合),但是匹配的时候需要让空节点可以匹配任意字符。代码如下: 时空复杂度O(nA+nB)O(n_A+n_B)O(nA

数学、算法爱好者的博客 166

【simulink模型】独立悬架振动模型,七自由度整车simulink模型

车辆悬架系统的设计对提升车辆行驶平顺性和操纵稳定性具有重要意义。本文构建了独立悬架的振动仿真模型以及七自由度整车动力学模型,基于 Simulink 平台实现对模型的动态响应仿真。通过对比不同工况下的车辆振动响应,验证了模型的准确性与实用性。研究结果为车辆悬架系统的优化设计提供了有力支持。

2401_84610415的博客 1584

AcWing 37 树的子结构

题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构。 我们规定空树不是任何树的子结构。 样例 树A: 8 / \ 8 7 / \ 9 2 / \ 4 7 树B: 8 / \ 9 2 返回 true ,因为B是A的子结构。 分析: 本题考察二叉树的匹配,用类似于字符串匹配一样暴力的方法逐一比较,...

昂昂累世士的博客 195

具身智能机器人算法控制研究进展综述

具身智能(Embodied Intelligence)作为人工智能与机器人学的交叉前沿领域,强调智能体通过物理身体与环境的持续交互涌现智能行为。近年来,随着基础模型(Foundation Models)、扩散策略(Diffusion Policy)、视觉-语言-动作(Vision-Language-Action, VLA)模型以及大规模机器人数据集(如Open X-Embodiment)的快速发展,具身智能机器人的算法控制范式正经历深刻变革。

VectorShift的博客 229

1、世界级模拟电路设计指南

本文详细探讨了模拟电路设计的各个方面,从基础概念到实际应用,涵盖了元件选择、滤波器设计、反馈系统、噪声问题以及SPICE仿真的优缺点。文中还提供了设计实例和无计算机设计方法,旨在帮助工程师提升模拟电路设计的效率与可靠性。

s1t2u3的博客 97

AcWing 37.树的子结构(python版)

题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。 我们规定空树不是任何树的子结构。 样例 树A: 树B: 返回 true ,因为B是A的子结构。 思路 1、由于对于一棵树的描述是给出其根节点,所以判断一棵树是否为另外一棵树的子树,首先就是判断两树的根节点是否一致。在对比过程中,如果发现A树的根节点和B树的根节点不一致,则需要找到A根节点的子孙节点接着与B的根节点进行比较,这里就想到利用递归遍历一棵树的所有节点。这里需要遍历的是A的所有节点 2、对于找到根节点相同的情况,则需要判断两棵树是否有相同

fuzzy__H的博客 305

harbor x509: certificate signed by unknown authority【20251222】

本教程通过「合并证书链(服务器端)+ 预置根 CA(客户端)」彻底解决了自签名证书的 x509 错误,同时集成了 Trivy 漏洞扫描,实现了 Harbor 从搭建到实用的全流程。证书链合并是服务器端的关键,确保客户端获取完整信任路径;客户端需同时配置「系统信任库 + Docker 信任目录」,避免 Docker 独立信任机制导致的问题;所有 IP 需保持一致(Harbor 配置、证书绑定、客户端访问),是避免错误的基础。

老韩的Linux云计算架构师进阶之路 681

剑指offer打卡day17——AcWing 37. 树的子结构

【题目描述】 AcWing 37. 树的子结构 【思路】 与两个字符串匹配类似的 1、 A中的每一个节点都有可能是树B的根节点,枚举A的每一个节点只要非空,就以该节点为根跟B树进行匹配比较。 2、 然后同时遍历B数和以A中某个节点为根的树,判断是否一致。 y总题解 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode

JohnnyLin 170

【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法

相比C文本类编程语言,Simulink图形化编程语言的优势是逻辑思路和数据流清晰了很多,劣势是程序执行的时序不明确,而且各个模块的配置使编程的灵活度下降了不少,在使用习惯上面总感觉有各种限制。本文就是拆解Simulink中最基础的几个编程模块,发扬它的优势,避开劣势。

Mr.Cssust的博客 3851

python代码实现了一个基于图注意力网络(GAT)和长短期记忆网络(LSTM)的股票成交量预测模型

自定义数据集类:定义了类,继承自。该类用于生成股票数据的时间序列样本,每个样本包含一个长度为seq_length的时间序列和对应的目标成交量。数据加载器:使用DataLoader对数据集进行批量加载,设置批量大小为 64,并开启数据打乱功能。GAT - LSTM 模型:定义了GAT_LSTM类,继承自。该模型结合了 GAT 和 LSTM 两种神经网络:GAT 部分:使用GATConv处理全局图特征,捕获股票之间的相互关系。LSTM 部分:使用nn.LSTM处理时间序列数据,捕捉时间序列的动态变化。

huanghm88的专栏 425

剑指 offer acwing 37 树的子结构

题面 题解 判断B是不是A的子结构,其实可以对比字符串的匹配,我们从B的根节点开始,,然后匹配A的根节点,如果失败,再从B的左儿子和右儿子匹配A的根节点(类似字符串) 匹配过程: 如果A节点为空,说明匹配完成,返回true,如果B节点为空或者B的值和A的值不相同,返回false,否则,继续判断AB的左右儿子(递归即可) 代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; * T

qq_44791484的博客 140

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ACWING37. 树的子结构(剑指offer)

输入两棵二叉树A,B,判断B是不是A的子结构。 我们规定空树不是任何树的子结构。 样例 树A: 8 / \ 8 7 / 9 2 / 4 7 树B: 8 / 9 2 返回 true ,因为B是A的子结构。 class Solution { public: bool hasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) { ...

tomjobs的博客 332

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

AcWing 37. 树的子结构(C++)- 二叉树

题目链接:https://www.acwing.com/problem/content/35/ 题目如下: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class

qq_40467670的博客 113

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

acwing周赛第37场题解

acwing周赛第37场题解

涛涛的个人博客 992

AcWing语法基础课题单

算法养成计划之语法基础 给大一表弟整理的AcWing语法基础课题单 第一讲 变量、输入输出、表达式与顺序语句 第1题 A + Bhttps://www.acwing.com/problem/content/1/ 第2题 差https://www.acwing.com/problem/content/610/ 第3题 圆的面积 https://www.acwing.com/problem/content/606/ 第4题 平均数 https://www.acwing.com/problem/content/6

nuoyanli的博客 4170

Acwing第37场周赛题解

A 原题链接4296. 合适数对 方法: 题目的数据量给的不是很大,直接双循环,通过公式暴力求解就好了。 #include<iostream> using namespace std; int main(){ int n,a,b; int flag=0;//(1) scanf("%d%d%d",&n,&a,&b); int t1; int t2; for(int i=0;i<=1000;i++){

weixin_59112191的博客 700

【算法练习】Acwing第37周周赛

第一题不是太难或者太恶心人的情况下,一般不会写哦。 二、截断数组(中等)(二分、哈希表、双指针) 这个数组有两个拆分点,也可以只有一个,我们可以固定第二个拆分点,去找第一个拆分点,使得s1 = s3,因为题目中说了每个元素都>=1,所以第一个拆分点指针往后走s1的区间和肯定是递增的,所以使得s1 = s3的第一个拆分点指针是唯一的! 第二个点固定了,要找第一个点,而且还是递增的关系,显然第一个做法:二分!这样我们便利后面指针位置需要O(n),二分需要O(logn),总共也就是O(nlogn),.

Mxeron的博客 349

「Acwing」第37场周赛 题解

A - 4296. 合适数对 解题思路 由于 n <= 1000,直接将x从1枚举到1000即可,用公式求出y 将判断条件写为xa<=n,这样就可以保证y也是正数 TIPS:如果xa>n的话,y*b就一定是负数=>y是负数 代码 #include <bits/stdc++.h> using namespace std; int main() { int n, a, b; cin >> n >> a >> b;

CodeTty的博客 638

AcWing 国王游戏

AcWing 国王游戏 Description 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏。 首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。 然后,让这 n 位大臣排成一排,国王站在队伍的最前面。 排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是: 排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数...

aochongbi5356的博客 125

寒假每日一题打卡day37——AcWing 3208. Z字形扫描

AcWing 3208. Z字形扫描 【思路】 模拟 z形矩阵分两部分:前半部分和后半部分 先确定每个部分的起始位置 然后根据每条对角线x、y之和是定值。x走动带动y import java.util.Scanner; public class Main{ static int N = 510; static int a[][] = new int[N][N]; public static void main(String args[]){ Scanner ..

JohnnyLin 165

【题解】【AcWing】1595. 螺旋矩阵

1595. 螺旋矩阵 原题传送:AcWing 1595. 螺旋矩阵 给定一个包含 NNN 个正整数的序列,请你将序列中的元素以非递增顺序填充到螺旋矩阵中。 从左上角的第一个元素开始填充,并按照顺时针方向旋转。 要求矩阵有 mmm 行 nnn 列,并且 m,nm,nm,n 满足: m×n=Nm \times n=Nm×n=N m≥nm \ge nm≥n m−nm-nm−n 尽可能小 输入格式 第一行包含整数 NNN 。 第二行包含 NNN 个整数。 输出格式 输出填充好的 m×nm \times nm×n

葑鈊丶 799

AcWing第33-37场周赛

在此记录,仅为方便复盘。 -第33场周赛 4207. 最长合法括号子序列 一个合法的括号序列满足以下条件: 序列()被认为是合法的。 如果序列X与Y是合法的,则XY也被认为是合法的。 如果序列X是合法的,则(X)也是合法的。 例如,(),()(),(())这些都是合法的。 现在,给定一个由 ( 和 ) 组成的字符串。 请你求出其中的最长合法括号子序列的长度。 注意,子序列不一定连续。 输入格式 共一行,一个由 ( 和 ) 组成的字符串。 输出格式 一个整数,表示最长合法括号子序列的长度。 数

sylviiiiiia的博客 314

Acwing 第37场周赛

AcWing 4296. 合适数对 暴力枚举 O(n2)O(n^2)O(n2) #include <iostream> #include <cstring> #include <algorithm> using namespace std; int n,a,b; int main() { cin>>n>>a>>b; for(int i=0;i<=1000;i++){ for(int j=0;j

hacker__man的博客 175

ACWing 背包模型 day37

训练记录

qq_23852555的博客 242

[LeetCode] 37. 解数独(java实现)dfs

[LeetCode] 37. 解数独(java实现)dfs1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结 1. 题目 2. 读题(需要重点注意的东西) 思路(): 第一反应是可以用类似于数字排列的dfs来实现,如果本题实现有困难,可以先完成[AcWing]842. 排列数字(C++实现)dfs模板题,递归思想的解释,再理解本题会容易很多。 原九宫格如下图所示,用 i 表示行、 j 表示列 将9个小的九宫格编号,因此它们可以表

cloud的博客 662
上一篇: AcWing 36. 合并两个排序的链表(归并+混洗)
下一篇: 912数据结构自学习题总结Part4
Zee_Chao
博客等级 码龄11年 168粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值