剑指offer:树的子结构 代码实现
2015-09-05 00:42
489 查看
题目描述
输入两颗二叉树A,B,判断B是不是A的子结构。
输入两颗二叉树A,B,判断B是不是A的子结构。
[code]struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; class Solution { public: bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) { bool result = false; if(pRoot1 != NULL && pRoot2 != NULL) { /* 如果这个节点相同,则判断是否是子树 */ if(pRoot1->val == pRoot2->val) { result = hasTree1IncludeTree2(pRoot1,pRoot2); } /* 如果不是,接下来递归判断左子树 */ if(result == false) { result = HasSubtree(pRoot1->left,pRoot2); } /* 如果不是,接下来递归判断右子树 */ if(result == false) { result = HasSubtree(pRoot1->right,pRoot2); } } return result; } /* 判断pRoot2是否是pRoot1的子树 */ bool hasTree1IncludeTree2(TreeNode* pRoot1, TreeNode* pRoot2) { /* 如果树2为空,则所有都匹配,查找成功 */ if(pRoot2 == NULL) { return true; } if(pRoot1 == NULL) { return false; } if(pRoot1->val != pRoot2->val) { return false; } return hasTree1IncludeTree2(pRoot1->left,pRoot2->left) && hasTree1IncludeTree2(pRoot1->right,pRoot2->right); } };
相关文章推荐
- CSS规范-网易NEC
- CSS float小解
- 剑指offer:合并两个排序的链表 代码实现
- Emmet:html/css代码快速编写神器
- CDH5.4.5运行多字符分割记录
- Go学习笔记:json处理
- 剑指offer:输入一个链表,反转链表后,输出链表的所有元素。
- web前端开发工程师需要学习的技能
- CSS知识点总结2
- JSP执行过程
- JS基础
- JavaScript中常用的函数以及基础写法汇总
- AngularJS的双向数据绑定
- Caffe学习:使用pycaffe绘制loss、accuracy曲线
- SGU 194. Reactor Cooling【无源汇上下界最大流】
- 剑指offer:输入一个链表,输出该链表中倒数第k个结点。
- 解决jsp页面汉字乱码问题
- 剑指offer 调整数组顺序使奇数位于偶数前面
- 条款10:令operator=返回一个reference to * this(Have assignment operators return a reference to *this)
- Caffe学习:使用pycaffe生成mean_file.py文件