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; } };