class Solution {
public:
bool isSubStructure(TreeNode* A, TreeNode* B)
{
if (A==NULL||B==NULL) return false;
return DFS(A, B) || isSubStructure(A->left, B) || isSubStructure(A->right, B);
}
bool DFS(TreeNode* A, TreeNode* B)
{
if (B==NULL) return true;
if (A==NULL) return false;
return A->val == B->val && DFS(A->left, B->left) && DFS(A->right, B->right);
}
};
class Solution {
public:
bool isSubtree(TreeNode* s, TreeNode* t)
{
if (s == NULL && t == NULL) return true;
if(s==NULL||t==NULL)return false;
return DFS(s,t) || isSubtree(s->left, t)|| isSubtree(s->right, t);
}
bool DFS(TreeNode* s, TreeNode* t)
{
if (s == NULL && t == NULL) return true;
if (s != NULL && t != NULL)
return s->val==t->val && DFS(s->left, t->left)&& DFS(s->right, t->right);
return false;
}
};