class Solution {
public:
    bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
    {
        if(!pRoot2) return false;
        if(pRoot1){
            return isEqual(pRoot1, pRoot2) || isEqual(pRoot1->left, pRoot2)||isEqual(pRoot1->right, pRoot2);
        }
        else return false;
    }

    bool isEqual(TreeNode* root1, TreeNode * root2){
        if(!root1 && !root2) return true;
        if(root1 && root2){
            if(root1->val == root2->val){
                return isEqual(root1->left, root2->left) && isEqual(root1->right, root2->right);
            }else{
                return false;
            }
        }
        return root1 && !root2;
    }
};