给定两个二叉树s和t,看t是否为s的一个小子树(相同的结构,相同的数值)。
s为空,False;
s与t完全一致,True;
s的左、右子树分别于t比较,返回self.isSubtree()。
class Solution:
def isSubtree(self, s, t):
"""
:type s: TreeNode
:type t: TreeNode
:rtype: bool
"""
if not s:
return False
if self.isMatch(s, t):
return True
return self.isSubtree(s.left, t) or self.isSubtree(s.right, t)
def isMatch(self, s, t):
if not (s and t): # if not s or not t
return s == t
return (s.val == t.val and self.isMatch(s.left, t.left) and self.isMatch(s.right, t.right))