subTree

struct Tree()

{	

	int val;

	Tree *left, *right;

	Tree(int a): val(a), left(NULL), right(NULL){}

}

bool hasSubTree(Tree *root1, Tree * root2){



	if(root2 == NULL) return true;

	if(root1 == NULL) return false;

	

	bool result = false;

	

	if(root1->val == root2->val)

		result = isSubTree(root1, root2);

	

	if(!result)

		result = hasSubTree(root1->left, root2);

	if(!result)

		result = hasSubTree(root1->right, root2);

		

	return result;

}



bool isSubTree(Tree *root1, Tree * root2){

	if(root2 == NULL) return true;

	if(root1 == NULL) return false;

	if(root1->val != root1->val) return false;

	return isSubTree(root1->left, root2->left)

	        && isSubTree(root1->right, root2->right); 

}

  

你可能感兴趣的:(tree)