输入两颗二叉树A,B,判断B是不是A的子结构。
来源:互联网 发布:ps软件有哪些 编辑:程序博客网 时间:2024/05/16 08:24
这里测试的结果为假设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* pRoot1, TreeNode* pRoot2)
{
if(pRoot1==NULL||pRoot2==NULL)//B或A为空二叉树,则B都不是A的子结构
return false;
else if(pRoot1->val==pRoot2->val)//当A的节点值与B的相同时判断B的左子树和右子树是否是A的左子树和右子树的子结构
{
if(pRoot2->left==NULL&&pRoot2->right==NULL)//B的左子树和右子树都为空,则B是A的子结构
return true;
else if(pRoot2->left==NULL)//如果B的左子树为空,检查B的右子树是否是A的右子树的子结构
return HasSubtree(pRoot1->right,pRoot2->right);
else if(pRoot2->right==NULL)
return HasSubtree(pRoot1->left,pRoot2->left);
else{
if( HasSubtree(pRoot1->left,pRoot2->left)&&HasSubtree(pRoot1->right,pRoot2->right))//B是A的子结构
return true;
else
return HasSubtree(pRoot1->left,pRoot2)||HasSubtree(pRoot1->right,pRoot2);//B是否是A的左子树或右子树的子结构
}
}
else
return HasSubtree(pRoot1->left,pRoot2)||HasSubtree(pRoot1->right,pRoot2);
}
};
0 0
- 输入两颗二叉树A,B,判断B是不是A的子结构。
- java实现:输入两颗二叉树A,B,判断B是不是A的子结构
- 输入两颗二叉树A,B,判断B是不是A的子结构
- 输入两颗二叉树A和B,判断B是不是A的子结构
- java 输入两颗二叉树A,B,判断B是不是A的子结构。
- 输入两颗二叉树A,B,判断B是不是A的子结构
- 输入两颗二叉树A,B,判断B是不是A的子结构
- java实现输入两棵二叉树A,B,判断B是不是A的子结构
- 15.输入两棵二叉树A,B,判断B是不是A的子结构
- 题目:输入两棵二叉树A和B,判断B是不是A的子结构。
- 输入两棵二叉树A,B,判断B是不是A的子结构。
- 输入两棵二叉树A,B,判断B是不是A的子结构
- 输入两棵二叉树A,B,判断B是不是A的子结构。
- 输入两棵二叉树A和B,判断B是不是A的子结构
- 【剑指offer】面试题18:输入两颗二叉树A和B,判断B是不是A的子结构?
- 第6天 输入两棵二叉树A和B,判断B是不是A的子结构。
- 剑指offer 18---输入两棵二叉树A和B,判断B是不是A的子结构
- 输入两颗二叉树A,B,判断B是不是A的子结构。(树中可能有重复的值)
- php Warning: phpinfo(): It is not safe to rely on the system's timezone settings.解决方法
- C++实现线程池
- j2ee之servlet角色详细探讨!!!
- crash部分命令用法
- Shell脚本基础介绍
- 输入两颗二叉树A,B,判断B是不是A的子结构。
- 哈希表基础知识(hash table)(1)
- 用java实现的一些插入(顺序和乱序)和查找(顺序和二分)
- SQL中的CASE WHEN用法:
- hdu 1423 Greatest Common Increasing Subsequence(不连续子序列)
- 黑马程序员——IO流(File对象)
- Marriage Match IV (hdu 3416 网络流+spfa最短路)
- 浅谈java常量池
- dede模版引擎工作原理和自定义标签