剑指offer-算法题练习:part19 树的子结构
来源:互联网 发布:淘宝产品图片尺寸留白 编辑:程序博客网 时间:2024/06/05 10:51
剑指offer-算法题练习:part19 树的子结构
时间限制:1秒空间限制:32768K
题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
/*struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};*/class Solution { bool isSubtree(TreeNode* pRoot1,TreeNode* pRoot2){ //if(pRoot1==NULL) return false;// if(pRoot2==NULL) return true;//此处不是判断2为空树时,不是1的子树,而是递归时上一层的proot2匹配结束了 //此处为pRoot2 == null 是匹配完成的条件 //最开始pRoot2肯定不为NULL,这是在主程序HasSubtree中判断过的。 //递归中,如果pRoot2为空了,则表示上一层的递归中的pRoot2已经匹配完了 if(pRoot1==NULL) return false;//1为A,2为B,1为空,则2不是1的子树 if(pRoot2->val == pRoot1->val){ return isSubtree(pRoot1->left,pRoot2->left)&& isSubtree(pRoot1->right,pRoot2->right); }//if else return false; // 其中需要注意的是: }public: bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) { if(pRoot1==NULL||pRoot2==NULL) return false; //else return isSubtree(pRoot1, pRoot2) || HasSubtree(pRoot1->left, pRoot2) || HasSubtree(pRoot1->right, pRoot2); }};//1. 测试用例如果pRoot2为空的话,返回的false而不是我们认为的空树,应该是所有树的子树//2. 再判断是否子树的过程中,应该先判断pRoot2是否为空,为空则表明子树的所有节点都比较完了, //应该是子树返回True//3. 对任何一个树节点进行访问时,一定要提前检测该节点是否为空
0 0
- 剑指offer-算法题练习:part19 树的子结构
- 剑指Offer算法实现之十八:树的子结构
- 剑指offer:判断树的子结构
- 【剑指offer】树的子结构
- 【剑指offer】Q18:树的子结构
- 剑指offer--17树的子结构
- 剑指offer--树的子结构
- 剑指Offer之 - 树的子结构
- 剑指offer 18 - 树的子结构
- 剑指Offer-树的子结构
- 剑指offer之树的子结构
- 《剑指offer》树的子结构
- 剑指offer—树的子结构
- 剑指Offer-18-树的子结构
- 剑指offer:树的子结构
- 【剑指offer】之树的子结构
- 剑指offer 17 树的子结构
- 剑指offer 树的子结构
- 题目1003:A+B
- 笔记9:java_写一个简单的java类
- android studio 记录
- 基本注意事项2
- C#学习之方法
- 剑指offer-算法题练习:part19 树的子结构
- Python 抽象
- poj-3159【差分约束+Dijkstra算法的优化】
- 排序总结系列二:直接插入排序
- 双向链表的Java实现,以及相关函数的实现
- 【工控安全产品】工业控制系统信息安全检查工具箱
- [Android]XML和JSON的区别
- Zhu and 772002
- 某个个人公众号阅读量和点赞数分析