您的位置:首页 > 其它

输入两颗二叉树A,B,判断B是不是A的子结构。(树中可能有重复的值)

2015-09-06 10:08 363 查看


题目描述

输入两颗二叉树A,B,判断B是不是A的子结构。

步骤:

本节点是不是与子树根节点相同,是:分别比较左右节点,否:本节点的左右子节点是否与子树根节点相同;最后没有找到相同的,返回false

代码:
bool BeOne(TreeNode* pRoot1,TreeNode* pRoot2){
if(pRoot2 ==NULL)
return true;
if(pRoot1 == NULL)
return false;

if(pRoot1->val == pRoot2->val){
return BeOne(pRoot1->left,pRoot2->left) && BeOne(pRoot1->right,pRoot2->right);
}else
return false;
}
public:
bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
{
if(pRoot1 == NULL || pRoot2 == NULL)
return false;
bool found = BeOne(pRoot1,pRoot2);
if(!found)
found = HasSubtree(pRoot1->left,pRoot2);
if(!found)
found = HasSubtree(pRoot1->right,pRoot2);
return found;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: