问题描述

输入两棵二叉树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

代码

/**
* 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 isSubStructure(TreeNode* A, TreeNode* B) {
if(!B || !A)return false;
return dfs(A,B) || isSubStructure(A->left,B) || isSubStructure(A->right,B);
}
bool dfs(TreeNode* A,TreeNode* B)
{
if(!B)return true;
else if(!A && B)return false;
if(A->val != B->val)return false;
return dfs(A->left,B->left)&&dfs(A->right,B->right);
}
};

结果:

执行用时 :76 ms, 在所有 C++ 提交中击败了34.35%的用户
内存消耗 :33.5 MB, 在所有 C++ 提交中击败了100.00%的用户

最新文章

  1. 使用 JavaScriptService 在.NET Core 里实现DES加密算法
  2. Flex DataGrid可编辑对象实现Enter跳转
  3. html2canvaces用法,js截屏并且下载
  4. textfield设置左边距
  5. C++中颜色的设置
  6. Intellij IDEA 构建Spring Web项目 — 用户登录功能
  7. 支持https请求以及https请求的抓包
  8. int*-------int
  9. C语言初学 数组 打印菱形
  10. Objective-C 数组、可变数组
  11. 【Winform开发2048小游戏】
  12. WPF专业编程指南 - 那些根元素&lt;&gt;的解释
  13. mysql之 mysql 5.6不停机双主一从搭建(活跃双主一从基于日志点复制)
  14. 依赖Aspose.Cells Excel 导出
  15. 生成器以及yield语句
  16. Python-定时爬取指定城市天气(二)-邮件提醒
  17. MyBatis探究-----返回Map类型数据
  18. jQuery添加删除
  19. iptable四表五链
  20. BZOJ2152[国家集训队]聪聪可可——点分治

热门文章

  1. CF390A Inna and Alarm Clock 题解
  2. webservice注意事项
  3. JAVAWEB使用FreeMarker利用ftl把含有图片的word模板生成word文档,然后打包成压缩包进行下载
  4. 【Tools】VS搭建Qt开发环境
  5. Android NDK开发篇:如何使用JNI中的global reference和local reference
  6. 【LeetCode】1423. 可获得的最大点数 Maximum Points You Can Obtain from Cards (Python)
  7. 【LeetCode】1472. 设计浏览器历史记录 Design Browser History (Python)
  8. 【LeetCode】718. Maximum Length of Repeated Subarray 解题报告(Python)
  9. 【LeetCode】491. Increasing Subsequences 解题报告(Python)
  10. 版本不兼容Jar包冲突该如何是好?