输入两颗二叉树A,B,判断B是不是A的子结构。(树中可能有重复的值)
2015-09-06 10:08
363 查看
题目描述
输入两颗二叉树A,B,判断B是不是A的子结构。步骤:
本节点是不是与子树根节点相同,是:分别比较左右节点,否:本节点的左右子节点是否与子树根节点相同;最后没有找到相同的,返回false
代码:
bool BeOne(TreeNode* pRoot1,TreeNode* pRoot2){ if(pRoot2 ==NULL) return true; if(pRoot1 == NULL) return false; if(pRoot1->val == pRoot2->val){ return BeOne(pRoot1->left,pRoot2->left) && BeOne(pRoot1->right,pRoot2->right); }else return false; } public: bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) { if(pRoot1 == NULL || pRoot2 == NULL) return false; bool found = BeOne(pRoot1,pRoot2); if(!found) found = HasSubtree(pRoot1->left,pRoot2); if(!found) found = HasSubtree(pRoot1->right,pRoot2); return found; }
相关文章推荐
- BestCoder Round #54 (div.2) 1001 字符串处理+排序
- 智力类笔试题基础(第一篇
- Zombie僵尸进程发现,查找,追踪,杀死,避免
- 深入理解jQuery中live与bind方法的区别
- 1093. Count PAT's (25)
- [unity3d]手游资源热更新策略探讨
- 剑指Offer系列---(3)赋值运算符函数
- [刷题]Sqrt(x)
- LINUX重启MYSQL的命令
- 精灵点点基础教程7 -- 自建窗体
- 当程序崩溃的时候怎么办 Part-2
- 酷派+乐视能否再造一个“苹果生态”
- C# 抽象类和抽象方法详解
- Linux 中open系统调用实现原理 2012-11-29 23:03:48 http://blog.chinaunix.net/uid-25968088-id-3426026.html
- VC中编写DLL的函数声明问题
- 英文简历
- linux Oops和Panic关系 .
- uva12325(greedy)
- Storm安装
- HDU 1711