剑指offer之面试题18:树的子结构
2016-07-09 14:48
295 查看
题目:
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
思路:
本文出自 “momo就是辣么萌” 博客,请务必保留此出处http://momo462.blog.51cto.com/10138434/1812961
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
思路:
//1、遍历二叉树pRoot1,找到和pRoot2根结点相等的结点 //2、在对这个节点进行判断,是否其内部和PRoot2的结构完全相等代码:
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { public: bool JudgeSub(TreeNode *pRoot1,TreeNode *pRoot2) { //一定要先判断PRoot2,在判断proot1 if(pRoot2==NULL) { return true; } if(pRoot1==NULL) { return false; } if(pRoot1->val==pRoot2->val) { return JudgeSub(pRoot1->left,pRoot2->left)&&JudgeSub(pRoot1->right,pRoot2->right); } else { return false; } } //1、遍历二叉树pRoot1,找到和pRoot2根结点相等的结点 //2、在对这个节点进行判断,是否其内部和PRoot2的结构完全相等 bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) { bool result=false; if(pRoot1!=NULL&&pRoot2!=NULL) { if(pRoot1->val==pRoot2->val) { result=JudgeSub(pRoot1,pRoot2); } if(!result) { result=HasSubtree(pRoot1->left,pRoot2)||HasSubtree(pRoot1->right,pRoot2); } } return result; } };
本文出自 “momo就是辣么萌” 博客,请务必保留此出处http://momo462.blog.51cto.com/10138434/1812961
相关文章推荐
- "享元模式"-之Java,Android面试必问设计模式(9/9)
- 集合的补充(Map)
- php中级面试题
- [置顶] 年薪百万的年轻人都是怎样生活的?——脸书程序员的故事
- 纪念一下参加的腾讯阿里实习面试
- java各类面试题集合
- 牛客网程序员面试金典:1.2——原串翻转(java实现)
- 需要仔细读的书 (July 8, 2016)
- JAVA基础面试题(经典)
- iOS面试题四
- Java Android程序员软件开发知识:枚举的介绍,以及代码的编写教程。
- iOS面试题总结整理(附答案)
- 安卓手册 第二章(了解项目)
- 牛客网程序员面试金典:1.1确定字符互异(java实现)
- Android面试题1
- 【钜惠预告】黑马程序员暑期抢座活动即将上线
- 剑指Offer:面试题34——丑数(java实现)
- 面试冒泡排序
- 剑指Offer:面试题33——把数组排成最小的数(java实现)(未完待续)
- 【雷军】给程序员的五点建议--如何成为编程高手并以此创业