题目:给出2给数A与B,判断B是不是A的子结构。(假定空树不是任何树的子结构)
class Solution {
public:
bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
{
bool res = false;
if (pRoot1 == NULL||pRoot2 == NULL)
return false;
//可用 res=ifsubtree(pRoot1,pRoot2); 代替下面两行。
if (pRoot1->val == pRoot2->val)
res=ifsubtree(pRoot1,pRoot2);
if (!res)
res = HasSubtree(pRoot1->left,pRoot2);
if (!res)
res = HasSubtree(pRoot1->right, pRoot2);
return res;
}
bool ifsubtree(TreeNode* r1, TreeNode* r2)
{
if (r2 == NULL)
return true;
if(r1 == NULL)
return false;
if(r1->val!=r2->val)
return false;
if (r1->val == r2->val)
return (ifsubtree(r1->left, r2->left) && ifsubtree(r1->right, r2->right));
}
};