# -*- 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 def cmp(p1,p2):#递归比对函数 if not p2:# p2都没有了 说明比较完成 各个结点相等 return True if not p1:# p1有一个没有了说明p2不是子树 return False if p1.val!=p2.val: return False return cmp(p1.left,p2.left) and cmp(p1.right,p2.right)#分别递归比对各自的左右子树 #开始比较 if not pRoot2 or not pRoot1: return False f=False if pRoot1 and pRoot2: if pRoot1.val==pRoot2.val: #找到第一个相等的结点开始递归比对 if cmp(pRoot1,pRoot2): f=True if not f and pRoot1.left: #如果不是子树且pRoot1.left存在 if self.HasSubtree( pRoot1.left, pRoot2): f=True if not f and pRoot1.right: #如果不是子树且pRoot1.right存在 if self.HasSubtree( pRoot1.right, pRoot2): f=True return f