题目描述
输入两颗二叉树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;
}