[剑指offer]树的子结构
来源:互联网 发布:windows播放器解码器 编辑:程序博客网 时间:2024/06/05 06:53
题目描述
输入两颗二叉树A,B,判断B是不是A的子结构。
分析:这是百度实习生笔试的一道题。所以说刷题还是有必要的,然而。。。
第一次出错,直接递归,如果根元素相同,那么递归2的左子树是不是1的左子树的子结构,2的右子树是不是1的子结构,这是不对的,因为就算1的左子树中能找到2的左子树,但是这个不一定和根元素连着呀,所以这样是不对的。应该再写一个判断函数,判断2是不是与1根相同的一个子结构。
第二次出错,如果1和2根元素相同,进入判断函数判断,这步判断完如果结果是false的话,就要继续判断hassubtree,而不是直接返回false。。有点不清楚。。就是一句话的位置弄错了
/*struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};*/class Solution {public: bool IsSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {if(pRoot2==NULL) return true; if(pRoot1==NULL) return false;if(pRoot1->val==pRoot2->val){ return IsSubtree(pRoot1->left,pRoot2->left)&&IsSubtree(pRoot1->right,pRoot2->right); }else{ return false; } } bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2){ bool ret=false; if(pRoot1!=NULL&&pRoot2!=NULL){ if(pRoot1->val==pRoot2->val){ ret=IsSubtree(pRoot1,pRoot2); if(!ret){ ret=(HasSubtree(pRoot1->left,pRoot2)||HasSubtree(pRoot1->right,pRoot2)); } } } return ret; }};
0 0
- 剑指offer:判断树的子结构
- 【剑指offer】树的子结构
- 【剑指offer】Q18:树的子结构
- 剑指offer--17树的子结构
- 剑指offer--树的子结构
- 剑指Offer之 - 树的子结构
- 剑指offer 18 - 树的子结构
- 剑指Offer-树的子结构
- 剑指offer之树的子结构
- 《剑指offer》树的子结构
- 剑指offer—树的子结构
- 剑指Offer-18-树的子结构
- 剑指offer:树的子结构
- 【剑指offer】之树的子结构
- 剑指offer 17 树的子结构
- 剑指offer 树的子结构
- 剑指offer:树的子结构
- [剑指offer]树的子结构
- javase认识之数据类型知识总结
- 浅析C语言中的字节对齐
- hdu 5536 字典树
- 易语言学习第二十四课----文本分割
- 编译原理:C语言词法分析器
- [剑指offer]树的子结构
- GitHub Page
- SQL行列互换
- Chapter 9 Dictionaries Assignment 9.4
- spring boot 用maven搭建第一个RESTful Web 服务
- mysql的存储过程,视图的创建
- BASE64编码工具类
- ios中isa指针
- Java实现求最长增长子序列长度,并输出该子序列值