bool isSubtree(TreeNode* s, TreeNode* t) {
return dfs1(s,t);
}
int dfs1(TreeNode* s, TreeNode* t)
{
if(s==NULL)
return 0;
if(s->val == t->val)
{
if(dfs2(s,t))
return 1;
}
return dfs1(s->left,t) + dfs1(s->right,t);
}
int dfs2(TreeNode* s, TreeNode* t)
{
if((s == NULL && t != NULL) || (t == NULL && s != NULL))
return 0;
if(s == NULL && t == NULL)
return 1;
if(s->val!=t->val)
return 0;
if(dfs2(s->left,t->left) && dfs2(s->right,t->right))
return 1;
else
return 0;
}