下面的例子中 T2 是 T1 的子树:
1 3
/ \ /
T1 = 2 3 T2 = 4
/
4
下面的例子中 T2 不是 T1 的子树:
1 3
/ \ \
T1 = 2 3 T2 = 4
/
4
class Solution {
public:
/**
* @param T1, T2: The roots of binary tree.
* @return: True if T2 is a subtree of T1, or false.
*/
bool nua;
bool xx;
bool trade(TreeNode *x)
{
if(x==NULL)
return 0;
return 1;
}
void look2(TreeNode *a,TreeNode *b)
{
if(a==NULL||b==NULL)
return;
if(a->val!=b->val)
{
xx=0;
return ;
}
if(trade(a->left)!=trade(b->left)||trade(a->right)!=trade(b->right))
{ xx=0;return; }
look2(a->left,b->left);
look2(a->right,b->right);
}
void look(TreeNode *x,TreeNode *x1)
{
if(x==NULL)
return;
if(nua==1)
return;
if(x->val==x1->val&&nua!=1)
{ xx=1;
look2(x,x1);
}
if(xx==1)
nua=1;
look(x->left,x1);
look(x->right,x1);
}
bool isSubtree(TreeNode *T1, TreeNode *T2) {
nua=0;
xx=0;
if(T2==NULL)
return true;
look(T1,T2);
return nua;
// write your code here
}
};