题目描述  地址https://www.acwing.com/problem/content/35/
输入两棵二叉树A,B,判断B是不是A的子结构。

我们规定空树不是任何树的子结构。

样例

树A:

    / \

  / \

    / \

树B:

  / \

返回 true ,因为B是A的子结构。

算法1
一看到题目就想到 首先遍历A树(hasSubtree())
以每个点作为根节点和B树的节点比较 看看是否相同(issame())
如果和B树每个节点的值都相同(issame() 递归到B树节点为NULL) 那么就是有B结构的子树

C++ 代码

/**
* 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 IsSame(TreeNode* pRoot1, TreeNode* pRoot2)
{
if( pRoot2 == NULL) return true;
if( pRoot1 == NULL ) return false; if(pRoot1->val != pRoot2->val) return false; return IsSame(pRoot1->left ,pRoot2->left) && IsSame(pRoot1->right,pRoot2->right);
} bool hasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {
if ( NULL == pRoot1 || NULL == pRoot2) return false; if( IsSame(pRoot1,pRoot2) ) return true; if( hasSubtree(pRoot1->right,pRoot2) ) return true;
if( hasSubtree(pRoot1->left,pRoot2) ) return true; return false;
}
}; 作者:defddr
链接:https://www.acwing.com/solution/acwing/content/3540/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最新文章

  1. Devexpress Ribbon Add Logo
  2. 错误:java.util.Map is an interface, and JAXB can't handle interfaces.
  3. codeforces 360 E - The Values You Can Make
  4. 基于吉日嘎底层架构的通用权限管理Web端UI更新:参考DTcms后台界面
  5. SuSE Linux 开启VNC服务
  6. <转>RowState 介绍
  7. Hello Struts2
  8. 简约的单页应用引擎:sonnyJS
  9. jq 幻灯片插件制作
  10. 一:ZooKeeper简介
  11. ubuntu - sudo in php exec
  12. Linux/UNIX环境下Oracle数据库多实例开机启动脚本(转)
  13. (原)css 响应式媒体查询 模板
  14. Linux C编程一站式学习读书笔记——socket编程
  15. Thinking in scala (8)---- 乘幂计算
  16. nodejs npm常用命令 转
  17. win10常用快捷键
  18. Windows系统XAMPP安装Moodle教程
  19. 无法在正在进行内容生成时调用 StartAt
  20. EOS商业落地利器:多签名操作与应用

热门文章

  1. 基于SpringBoot前后端分离的点餐系统
  2. VueUI -- iView4.0简单使用
  3. [document.cookie]为什么cookie不在window下的呢.奇怪了[未完待续]
  4. CSS入门(定位的简单总结)
  5. ES6- Class类的使用,声明,继承
  6. JDK 安装与环境配置配置——Android开发第一步
  7. SpringCloud之Feign:REST客户端
  8. hadoop搭建的前期准备
  9. 12c分区增强功能,新功能(文档ID 1568010.1)
  10. tomcat启停脚本