题目:

  树的子结构

链接: 

  https://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88?tpId=13&tqId=11170&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

题目描述:

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

思路:

  分为两步:

     第一步:用HasSubtree 搜索与子树根节点值相同的点(递归查找),如果找到则进行第二步。

     第二步:用isSubtree搜索子树是否是大树的子树,

代码:

  

 1 /*
 2 struct TreeNode {
 3     int val;
 4     struct TreeNode *left;
 5     struct TreeNode *right;
 6     TreeNode(int x) :
 7             val(x), left(NULL), right(NULL) {
 8     }
 9 };*/
10 class Solution{
11 public:
12     bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2){
13         bool result = false;
14         if(pRoot2 == nullptr)
15               return false;
16         if(pRoot1 == nullptr)
17               return false;
18         if(pRoot1->val == pRoot2->val){
19             result = isSubtree(pRoot1,pRoot2);
20         }
21         if(!result){
22             result = HasSubtree(pRoot1->left,pRoot2)|| HasSubtree(pRoot1->right, pRoot2);
23         }
24         return result;
25     }
26     bool isSubtree(TreeNode* root1, TreeNode* root2){
27         if(root2 == nullptr)
28               return true;
29         if(root1 == nullptr)
30             return false;
31         if(root1->val != root2->val)
32               return false;
33         else
34               return isSubtree(root1->left,root2->left)&& isSubtree(root1->right,root2->right);
35     }
36 };

  

转载于:https://www.cnblogs.com/wangshujing/p/6935462.html

剑指offer之【树的子结构】相关推荐

  1. 左神算法:判断 t1 树是否包含t2 树全部的拓扑结构(剑指 Offer 26. 树的子结构,Java版)

    本题来自左神<程序员代码面试指南>"判断 t1 树是否包含t2 树全部的拓扑结构"题目. 题目 剑指 Offer 26. 树的子结构 给定彼此独立的两棵树头节点分别为 ...

  2. 【LeetCode】剑指 Offer 26. 树的子结构

    [LeetCode]剑指 Offer 26. 树的子结构 文章目录 [LeetCode]剑指 Offer 26. 树的子结构 package offer;//定义树节点 class TreeNode{ ...

  3. 剑指offer:树的子结构

    题目 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 解题思路 暴力做法 取出树A/B的前序.中序: 判断这两个数组是否A都包含B,是则true. 前序和中 ...

  4. 《剑指offer》-- 树的子结构、二叉树的镜像、二叉树的深度、平衡二叉树

    一. 树的子结构: 1.题目: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构. 2.解题思路: 这个题比较简单,利用递归的方式就可以判断B是不是A树的子结构 ...

  5. 【无取巧解法,易于理解!】剑指 Offer 26. 树的子结构

    看题解时,很多大牛用很少的代码就完成了AC,但可能看了很多遍也看不懂,因此萌生了写一种最"笨"最完整的代码的想法,这样大家可以通过我的代码入门,看懂了再去挑战大牛们的简洁解法. 输 ...

  6. 剑指offer之树的子结构

    1 题目 输入两颗二叉树A和B,判断B是不是A的子结构(B树是A树的子结构) 比如:                   2     树A    3    5      树B   5         ...

  7. 剑指offer——判断树的子结构

    题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) https://www.nowcoder.com/practice/6e196c44c7004d ...

  8. 剑指offer——26.树的子结构(不太熟)

    题目: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 知识点: 无 注意: 注意想法的递归实现(好好琢磨一下,不然可能会忘!) 代码实现: 具体实现分两步 ...

  9. LeetCode——剑指 Offer 26. 树的子结构

    一.题目 输入两棵二叉树A和B,判断B是不是A的子结构.(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值. 例如: 给定的树 A: 3/ \4 5/ \1 2 ...

  10. 剑指offer 26 树的子结构

    输入两棵二叉树A和B,判断B是不是A的子结构.(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值. 例如: 给定的树 A: 3 / \ 4 5 / 1 2 给定 ...

最新文章

  1. 自动化办公 Python 操控 Word
  2. JVM的标配参数和X参数
  3. 如何实现Spark on Kubernetes?
  4. Unity动画系统经验谈:换装系统与骨骼调节
  5. 深入sql server中的事务
  6. 应用程序错误 应用程序发生异常w3wp.exe
  7. 舞台音效控制软件_QLab Pro 4.3.2 优秀的舞台音乐控制软件
  8. 永中word页码怎么从第二页开始_Word文档”双面打印“全攻略,解决打印难题!...
  9. CarbonData源码浅析一:Create Table
  10. Mysql数据表和表数据复制
  11. 有度即时通统一工作门户助力政企单位开启数字化办公新模式
  12. java 设计模式 常用21种
  13. 失败并不可怕,可怕的是害怕失败
  14. 医疗器械行业数据分析必备软件--全球可查
  15. CodeForces 332B Maximum Absurdity(线段树单点更新)
  16. Java植物名录程序_【人工智能】动物、植物、车型、菜品、LOGO识别示例代码
  17. Android P非SDK接口限制
  18. 网红茶饮亦难逃营销之困,喜茶们要怎么破局?
  19. 合作——没有人能脱离团队而存在
  20. Quick Bi经验总结

热门文章

  1. Python进阶(三)单例设计模式
  2. 什么是迁移学习?它都用在深度学习的哪些场景上?
  3. java技术学习路线(自用)
  4. 输出匹配项:grep
  5. 连续区间(数据岛)查询
  6. [刘阳Java]_Spring相关配置介绍_第5讲
  7. HDU - 2602 01背包
  8. [转]《帮我买个单》
  9. linux常用命令的全拼(转载)
  10. 离线安装docker镜像