给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。
一刷:
class Solution:
def isSubtree(self, s: TreeNode, t: TreeNode) -> bool:
def help(s: TreeNode, t: TreeNode) -> bool:
if s == None or t == None:
if s == None and t == None:
return True
else:
return False
elif s.val != t.val:
return False
else:
return help(s.left, t.left) and help(s.right, t.right)
if s == None:
return False
else:
if s.val == t.val:
return (help(s.left,t.left) and help(s.right, t.right)) or (self.isSubtree(s.left,t) or self.isSubtree(s.right, t))
else:
return self.isSubtree(s.left,t) or self.isSubtree(s.right, t)
第一次自己写了一个暴力匹配的解,有待优化。。