树的子结构
来源:互联网 发布:淘宝为什么成功 编辑:程序博客网 时间:2024/05/16 13:10
剑指offer面试题18
题目:
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
分析:
1、在树A中找到和B的根节点的值一样的结点R
2、判断树A中以R为根节点的子树是不是包含和树B一样的结构
二叉树遍历:一般采用递归的方法
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: //DoesTree1HaveTree2函数用来判断A中与B树根节点相同 的子树是不是根B包含一样的结构 bool DoesTree1HaveTree2(TreeNode* pRoot1, TreeNode* pRoot2) { if(pRoot2 == NULL) { return true; } if(pRoot1 == NULL) { return false; } //递归调用的退出条件 if(pRoot1->val != pRoot2->val) { return false; } return DoesTree1HaveTree2(pRoot1->left,pRoot2->left) && DoesTree1HaveTree2(pRoot1->right,pRoot2->right); } bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) { bool result = false; if(pRoot1 != NULL && pRoot2 != NULL) { //根节点相同,判断此根节点的子树是不是和B相同 if(pRoot1->val == pRoot2->val) { result = DoesTree1HaveTree2(pRoot1,pRoot2); } //继续查找左右子树有没有和pRoot2根节点相同的结点 if(!result) { result = HasSubtree(pRoot1->left,pRoot2); } if(!result) { result = HasSubtree(pRoot1->right,pRoot2); } } return result; }};
0 0
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- Unity3D Raycast, LayerMask的设置
- Zookeeper 安装和配置
- xml-使用parse修改xml文件中的内容
- 机器人局部避障的动态窗口法(dynamic window approach)
- 大数据学习笔记之二十八 Hadoop的第一代MapReduce MRV1
- 树的子结构
- pyhton题目-----stack by list
- Automation错误 定义的应用程序或对象错误-"Scripting.FileSystemObject"
- js正则操作
- JavaScript桶排序
- CentOS7 源码安装mysql 5.7
- Android案例之新闻客户端和服务器端采用php+mysql实现,完全属于自己的新闻展示平台
- 设置验证级别防止非法登陆
- 优化Redis内存的9个要点