15.树的子结构
2016-05-04 20:32
453 查看
树的子结构
参与人数:4088时间限制:1秒空间限制:32768K
算法知识视频讲解
输入两颗二叉树A,B,判断B是不是A的子结构。
做百度在线笔试的时候遇到了这道题,当时没有做出来,树的遍历一般用到递归,而这正是我的弱项,要加强练习!
HasSubtree的判断我写成了
参与人数:4088时间限制:1秒空间限制:32768K
算法知识视频讲解
题目描述
输入两颗二叉树A,B,判断B是不是A的子结构。做百度在线笔试的时候遇到了这道题,当时没有做出来,树的遍历一般用到递归,而这正是我的弱项,要加强练习!
/* 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* p1, TreeNode* p2) { bool result = false ; if ( p1 != NULL && p2 != NULL ) { if ( p1->val == p2->val ) result = isSubTree( p1, p2 ) ; if ( result == false ) result = HasSubtree( p1->left, p2 ) ; if ( result == false ) result = HasSubtree( p1->right, p2 ) ; } return result ; } bool isSubTree( TreeNode* p1, TreeNode* p2 ) { if ( p2 == NULL ) { return true ; } if ( p1 == NULL ) return false ; if ( p1->val != p2->val ) { return false ; } return ( isSubTree( p1->left, p2->left ) && isSubTree( p1->right, p2->right ) ) ; } };isSubTree是一个尾递归函数,尾递归先写好逻辑,在最后一步加入递归逻辑,算是比较简单的~
HasSubtree的判断我写成了
while (p1 != NULL && p2 != NULL)........已经是递归了还做while循环,简直是作死。
相关文章推荐
- Android中Base64的简单使用
- 配置.net连接数据库的配置文件
- Redis——分布式简单使用
- ZJOIDay2T1 BB题解
- jQuery选择器—表单选择器
- JavaScript学习随记——错误类型
- Unity3D——主角面朝方向一定区域内对象角度计算
- 海盗分金币
- opencv图像感兴趣区域提取时超出范围怎么办
- Zabbix3.0 自动邮件报障
- 共同学习Java源代码--常用工具类--StringBuffer(二)
- bzoj 3672: [Noi2014]购票 树上cdq分治
- leetcode 171 Excel Sheet Column Number C++
- Java泛型
- The Donkey of Gui Zhou驴和老虎是否相遇问题(hdu4704)
- POJ 2195 Going Home(最小权匹配、KM算法)
- LeetCode-150.Evaluate Reverse Polish Notation
- jQuery选择器—表单对象属性过滤选择器
- OpenCV粒子滤波器用于物体跟踪
- Android Dev Intro - Android SurfaceTexture