# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def HasSubtree(self, pRoot1, pRoot2):
        # write code here
        if not pRoot1 or not pRoot2:
            return False

        def hasequal(pRoot1, pRoot2):
            if pRoot2 == None:
                return True
            if pRoot1 == None:
                return False
            if pRoot1.val == pRoot2.val:
                if pRoot2.left == None:
                    leftNode = True
                else:
                    leftNode = hasequal(pRoot1.left, pRoot2.left)
                if pRoot2.right == None:
                    rightNone = True
                else:
                    rightNone = hasequal(pRoot1.right, pRoot2.right)
                return rightNone and leftNode
            return False


        if pRoot1.val == pRoot2.val:
            ret = hasequal(pRoot1, pRoot2)
            if ret:
                return True

        ret = self.HasSubtree(pRoot1.left, pRoot2)
        if ret:
            return True

        ret = self.HasSubtree(pRoot1.right, pRoot2)
        return ret