/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/
class Solution {
public:
	bool isSame(TreeNode* node1,TreeNode* node2)
	{	if(!node1&&node2)
		{
			return false;
		}
		if(node2==nullptr)
		{
			return true;
		}

		if(node1->val==node2->val)
		{
			return isSame(node1->left,node2->left)&&isSame(node1->right, node2->right);
		}
		return false;
	}
    bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {
		if(!pRoot1||!pRoot2)
		{
			return false;
		}
		return isSame(pRoot1, pRoot2)||HasSubtree(pRoot1->left,pRoot2)||HasSubtree(pRoot1->right, pRoot2);

	
    }
};