//小白代码,用递归做
class Solution {
  public:
    bool issame(TreeNode* pRoot1TreeNode* pRoot2){
        if(pRoot2==NULLreturn true;
        else{
            if(pRoot1==NULLreturn false;
            if(pRoot1->val!=pRoot2->valreturn false;
            else return issame(pRoot1->leftpRoot2->left) &&
                   issame(pRoot1->rightpRoot2->right);
        }
        
    }
    bool HasSubtree(TreeNode* pRoot1TreeNode* pRoot2) {
        if (pRoot2 == NULL||pRoot1==NULLreturn false;
        bool res=false;//结果
        if (pRoot1->val == pRoot2->val) {
            if(issame(pRoot1->leftpRoot2->left) &&issame(pRoot1->rightpRoot2->right))
                res=true;
        }//判断该位置是否是有相同的子结构
        if((res==false)&&(HasSubtree(pRoot1->left, pRoot2)||HasSubtree(pRoot1->right, pRoot2)))
            res=true;
        //换到左右子树分别看是否有相同的子结构
        return res;
    }
};