参考链接
t是s的子树有三种情况:
- t 和 s相等(t和s的根值相等,t的左子树与s的左子树相等且t的右子树与s的右子树相等)
- t 在s 的左子树里面
- t在s 的右子树里面
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def is_same(s,t):# 判断两个树是否相等
if (not s and not t): return True# 二者都为空
if not ( s and t): return False # 二者一个为空,另一个不为空
return s.val == t.val and is_same(s.left,t.left) and is_same(s.right,t.right)
class Solution:
def isSubtree(self, s: TreeNode, t: TreeNode) -> bool:
if (not s and not t): return True
if (not s and t): return False
return is_same(s,t) or self.isSubtree(s.left,t) or self.isSubtree(s.right,t)