剑指 Offer 26 树的子结构

news/2025/1/15 3:05:51/

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

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

示例 1:

输入:A = [1,2,3], B = [3,1]
输出:false

示例 2:

输入:A = [3,4,5,1,2], B = [4,1]
输出:true

思路:

这道题目和之前做的LeetCode572.另一棵树的子树这道题有点像,但是完全不是一道题
572题中,也是寻找子树,但是这个子树是指从你当前节点到叶子节点全部一样并且后边也都是NULL。
而这道题目不需要,只需要判断含有子树就行了,下边画图说明两道题目有什么不同之处。
在下图中,subroot在572题目中返回的是false,在剑指offer26中返回的是true
题解:题目中说了,如果有一个为空,那么直接false就行了
下边就分成两种情况讨论了,如果从头节点开始val就相等,那么一直比较root和subroot的左右子树是不是都相等
如果是返回true,如果不相等,那么就开始递归遍历root的左子树和root的右子树和subroot是不是匹配了
在issame中,如果subroot==NULL,返回false是因为已经有头节点一样了,这是遍历到左子树或者右子树的节点了
而该题目中,只是找有子结构的,并不需要从节点开始下边要全部一样。但是如果root为空时,subroot不为空,那么就有问题了

struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(int x):val(x),left(NULL),right(NULL){}
};class Solution {
public:bool isSubStrcture(TreeNode* root,TreeNode* subroot) {if (root == NULL || subroot == NULL)return false;if ((root->val == subroot->val) && issame(root->left, subroot->left)&& (issame(root->right, subroot->right)))return true;return isSubStrcture(root->left, subroot) || isSubStrcture(root->right, subroot);}bool issame(TreeNode* root,TreeNode* subroot) {if (subroot == NULL)return true;if (root == NULL) return false;if (root->val == subroot->val) {return issame(root->left, subroot->left) && issame(root->right, subroot->right);}else {return false;}}
};int main() {TreeNode* A = new TreeNode(1);TreeNode* B = new TreeNode(2);TreeNode* C = new TreeNode(3);A->left = B;A->right = C;TreeNode* a = new TreeNode(3);TreeNode* b = new TreeNode(1);a->left = b;Solution ss;cout << ss.isSubStrcture(A, a) << endl;return 0;
}

http://www.ppmy.cn/news/137748.html

相关文章

【DTK学习】获取锤子科技SmartisanOS在线手机壁纸

【DTK学习】获取锤子科技SmartisanOS在线手机壁纸 V0.2 1.预览壁纸 2.选择下载位置 3.点击下载&#xff08;下载的是预览时的三张图片&#xff09; 仅实现下载功能&#xff0c;问题不少&#xff0c;日后慢慢完善。 项目地址&#xff1a;https://github.com/houyawei-NO1/…

手机壁纸 | Vlog210808

*点击阅读原文下载原图&#xff0c;本期壁纸提取码&#xff1a;pp27 *壁纸资源来源于网络&#xff0c;公众号仅分享 *如有侵权&#xff0c;请联系小编删除

android 手机主题制作,怎么制作手机主题?

安卓手机可以设置自己喜欢的主题&#xff0c;那么该如何自己制作手机主题呢&#xff1f; 方法步骤&#xff1a; 1.安卓手机有一个好玩的功能&#xff0c;就是可以设置自己喜欢的主题桌面&#xff0c;不过有时候大家不喜欢软件给提供的手机主题&#xff0c;其实是可以自定义设置…

正能量励志文字手机壁纸

正能量励志文字手机壁纸&#xff0c; 就把它当作你的手机桌面壁纸来点缀心情&#xff01; 励志文字手机 励志文字手机 励志文字手机 励志文字手机 励志文字手机 励志文字手机 励志文字手机 高图网精选挑选出来的大家喜爱的壁纸&#xff0c;如果你喜欢这些壁纸&#xff0c;就把…

狗狗手机壁纸|爱宠必备

狗狗手机壁纸 高图网为您提供狗狗手机壁纸图片! 支持各种图片比例和分辨率&#xff0c;从 720P 到 4K、8K 应有尽有&#xff0c;电脑和手机都可以使用。图片丰富&#xff0c;质量很高&#xff0c;分类清新便于搜索&#xff0c;可以按屏幕比例和分辨率检索。 手机壁纸 可爱狗狗…

黄宗泽桌面手机壁纸

黄宗泽&#xff08;Bosco Wong&#xff09;&#xff0c;1980年12月13日出生&#xff0c;香港男演员、歌手。 2019年8月&#xff0c;担任浙江卫视《各位游客请注意》固定嘉宾&#xff1b; 2014年11月23日&#xff0c;凭借《点金胜手》获得星和无线电视大奖“最喜爱TVB电视角色”…

精美的多分类手机壁纸网PHP源码

介绍&#xff1a; 采用BootStrap 和 Ajax 异步获取数据 响应式的页面 在手机端的体验也不错 网盘下载地址&#xff1a; http://kekewl.org/I9frDkQvQBf0 图片&#xff1a;

手机壁纸图片源码自动采集美图网

介绍&#xff1a; 搭建很简单PHP环境把源码扔进去就行了 没数据库没后台&#xff0c; 图片全自动采集 网盘下载地址&#xff1a; http://kekewl.org/f6Fx4eE6s1E0 图片&#xff1a;