剑指Offer - 面试题26. 树的子结构(双重递归)

1. 题目

输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)

B是A的子结构, 即 A中有出现和B相同的结构和节点值。

例如:
给定的树 A:3/ \4   5/ \1   2
给定的树 B:4 /1
返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:
输入:A = [1,2,3], B = [3,1]
输出:false示例 2:
输入:A = [3,4,5,1,2], B = [4,1]
输出:true限制:
0 <= 节点个数 <= 10000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shu-de-zi-jie-gou-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 遍历A每个节点,值与 B 的 root 值相等的,开启再次递归 check
class Solution {bool found = false;
public:bool isSubStructure(TreeNode* A, TreeNode* B) {if(!A || !B) return false;if(A->val == B->val){found = check(A, B);if(found)return found;}isSubStructure(A->left,B);isSubStructure(A->right,B);return found;}bool check(TreeNode* A, TreeNode* B){if(found || !B || !A){if(found || !B)return true;return false;}if(A->val == B->val){return (check(A->left,B->left)&&check(A->right,B->right));}return false;}
};

在这里插入图片描述


  • 优化:return isSubStructure(A->left,B)||isSubStructure(A->right,B)可以剪枝,找到后及时 return
class Solution {bool found = false;
public:bool isSubStructure(TreeNode* A, TreeNode* B) {if(!A || !B) return false;if(A->val == B->val){found = check(A, B);if(found)return found;}   return isSubStructure(A->left,B)||isSubStructure(A->right,B);}bool check(TreeNode* A, TreeNode* B){if(found || !B || !A){if(found || !B)return true;return false;}if(A->val == B->val){return (check(A->left,B->left)&&check(A->right,B->right));}return false;}
};

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

给1万帧视频做目标分割,显存占用还不到1.4GB | ECCV2022

文 | 明敏 发自 凹非寺源 | 量子位 | 公众号 QbitAI咦&#xff0c;怎么好好的藤原千花&#xff0c;突然变成了“高温红色版”&#xff1f;这大紫手&#xff0c;难道是灭霸在世&#xff1f;&#xff1f;如果你以为上面的这些效果只是对物体后期上色了&#xff0c;那还真是被AI给…

互联网公司数据安全保护新探索

近年来&#xff0c;数据安全形势越发严峻&#xff0c;各种数据安全事件层出不穷。在当前形势下&#xff0c;互联网公司也基本达成了一个共识&#xff1a;虽然无法完全阻止攻击&#xff0c;但底线是敏感数据不能泄漏。也即是说&#xff0c;服务器可以被挂马&#xff0c;但敏感数…

剑指Offer - 面试题47. 礼物的最大价值(动态规划)

1. 题目 在一个 m*n 的棋盘的每一格都放有一个礼物&#xff0c;每个礼物都有一定的价值&#xff08;价值大于 0&#xff09;。你可以从棋盘的左上角开始拿格子里的礼物&#xff0c;并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值&#…

大佬在线复盘:我在训练 DALL·E 时犯过的错

文 | jxyxiangyu在写了一周的业务代码后&#xff0c;沏一杯绿茶&#xff0c;总算可以有时间看看鸽了一个月的素材了。好的&#xff0c;小伙伴们&#xff0c;废话不多说&#xff0c;今天我们将跟随 Boris Dayma 大佬&#xff0c;看看他在训练 DALLE-Mega 时遇到的一系列问题。据…

Toast与Snackbar的那点事

背景 Toast是Android平台上的常用技术。从用户角度来看&#xff0c;Toast是用户与App交互最基本的提示控件&#xff1b;从开发者角度来看&#xff0c;Toast是开发过程中常用的调试手段之一。此外&#xff0c;Toast语法也非常简单&#xff0c;仅需一行代码。基于简单易用的优点&…

LintCode 1683. 杀怪兽(队列)

1. 题目 有 n 只怪兽和一个奥特曼&#xff0c;奥特曼和怪兽都有5个属性值。 当且仅当奥特曼的5个属性值都不小于怪兽时&#xff0c;奥特曼可以杀死怪兽。 当一个怪兽被杀掉时&#xff0c;这个怪兽的5个属性会增加到奥特曼身上。 请问奥特曼最多可以杀死多少怪兽? 样例 1: 输…

聊聊大火的多模态

多模态机器学习&#xff0c;英文全称 MultiModal Machine Learning (MMML)&#xff0c;旨在通过机器学习的方法实现处理和理解多源模态信息的能力。每一种信息的来源或者形式&#xff0c;都可以称为一种模态。例如&#xff0c;人有触觉&#xff0c;听觉&#xff0c;视觉&#x…

2018开春大礼:750页电子书 + 33场技术沙龙资料 + 17场线上课程分享

2017年&#xff0c;美团成长为中国领先的生活服务电子商务平台&#xff0c;在吃喝玩乐住行等200多个品类&#xff0c;2800多个城区县&#xff0c;服务了亿万消费者、数百万商家&#xff0c;日订单数超过2200万&#xff0c;年度交易总额达到了3600亿。2017年10月&#xff0c;美团…

LintCode 1677. 石头(自定义优先队列)

1. 题目 给定数组 p 代表 n 个石头的位置和数组 d 代表这 n 块石头能够扔的距离。 从左(0位置)往右走。当你第 k 次碰到一个石头时&#xff0c; 如果 k 是奇数&#xff0c; 把这个石头往右扔&#xff1b; 如果 k 是偶数&#xff0c;跳过这个石头。 返回不再会碰到石头时&…

手机上也能训练BERT和ResNet了?!

源 | 机器之心研究者表示&#xff0c;他们将边缘训练看作一个优化问题&#xff0c;从而发现了在给定内存预算下实现最小能耗的最优调度。目前&#xff0c;智能手机和嵌入式平台等边缘设备上已经广泛部署深度学习模型来进行推理。其中&#xff0c;训练仍然主要是在具有 GPU 等高…

LintCode 125. 背包问题 II(DP)

1. 题目 有 n 个物品和一个大小为 m 的背包. 给定数组 A 表示每个物品的大小 数组 V 表示每个物品的价值. 问最多能装入背包的总价值是多大? 样例 1: 输入: m 10, A [2, 3, 5, 7], V [1, 5, 2, 4] 输出: 9 解释: 装入 A[1] 和 A[3] 可以得到最大价值, V[1] V[3] 9 样例…

大众点评App的短视频耗电量优化实战

前言 美团测试团队负责App的质量保证工作&#xff0c;日常除了App的功能测试以外&#xff0c;还会重点关注App的性能测试。现在大家对手机越来越依赖&#xff0c;而上面各App的耗电量&#xff0c;直接影响了手机的待机时间&#xff0c;是用户非常关心的一点。本文主要通过一个典…

解决CNN固有缺陷!通用 CNN 架构CCNN来了| ICML2022

文 | David W. Romero等源丨机器之心在 VGG、U-Net、TCN 网络中... CNN 虽然功能强大&#xff0c;但必须针对特定问题、数据类型、长度和分辨率进行定制&#xff0c;才能发挥其作用。我们不禁会问&#xff0c;可以设计出一个在所有这些网络中都运行良好的单一 CNN 吗&#xff1…

境外业务性能优化实践

本文根据第16期美团技术线上沙龙OnLine演讲内容整理而成。 前言 性能问题简介 应用性能是产品用户体验的基石&#xff0c;性能优化的终极目标是优化用户体验。当我们谈及性能&#xff0c;最直观能想到的一个词是“快”&#xff0c;Strangeloop在对众多的网站做性能分析之后得出…

LeetCode 第 21 场双周赛(779/1913,前40.7%)

文章目录1. 比赛结果2. 题目LeetCode 5336. 上升下降字符串 easyLeetCode 5337. 每个元音包含偶数次的最长子字符串 mediumLeetCode 5338. 二叉树中的最长交错路径 mediumLeetCode 5339. 二叉搜索子树的最大键值和 hard1. 比赛结果 只做出来了第1题&#xff0c;第3题有一个例子…

算法工程师的三观测试

文 | 小戏编 | 小轶如果我在谷歌输入“How to improve my machine learning models”&#xff0c;我会得到形形色色花样繁多的提升模型性能的方法。从调参到特征工程&#xff0c;从集成模型到数据增强&#xff0c;琳琅满目&#xff0c;不胜枚举。可是如果我在这个问题上加一点限…

领域驱动设计在互联网业务开发中的实践

至少30年以前&#xff0c;一些软件设计人员就已经意识到领域建模和设计的重要性&#xff0c;并形成一种思潮&#xff0c;Eric Evans将其定义为领域驱动设计&#xff08;Domain-Driven Design&#xff0c;简称DDD&#xff09;。在互联网开发“小步快跑&#xff0c;迭代试错”的大…

LeetCode 1377. T 秒后青蛙的位置(BFS)

1. 题目 给你一棵由 n 个顶点组成的无向树&#xff0c;顶点编号从 1 到 n。青蛙从 顶点 1 开始起跳。规则如下&#xff1a; 在一秒内&#xff0c;青蛙从它所在的当前顶点跳到另一个 未访问 过的顶点&#xff08;如果它们直接相连&#xff09;。青蛙无法跳回已经访问过的顶点。…

已删除

7.12更新:部分基金赎回的钱已经到账小金库了&#xff0c;今日从小金库提现时又提示银行卡已删除&#xff0c;不过这次可以点击重新绑定&#xff0c;重新绑定时会报错“绑定的卡与原卡一致”&#xff0c;流程没法走完。但这时候再退回去却发现“银行卡已删除”的提示没有了。于是…

即时配送的ETA问题之亿级样本特征构造实践

ETA&#xff08;Estimated time of Arrival&#xff0c;预计送达时间&#xff09;是外卖配送场景中最重要的变量之一&#xff08;如图1&#xff09;。 我们对ETA预估的准确度和合理度会对上亿外卖用户的订单体验造成深远影响&#xff0c;这关系到用户的后续行为和留存&#xff…