给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。
递归
class Solution(object):
def isSubtree(self, s, t):
def IfSame(s, t):
if s==None and t==None;
return True
if s==None and t!=None:
return False
if s!=None and t==None:
return False
if s.val == t.val:
return IfSame(s.left, t.left) and IfSame(s.right, t.right)
else
return False
if IfSame(s, t):
return True
elif s!=None:
return self.isSubtree(s.left, t) or self.isSubtree(s.right, t)
else:
return False
先序遍历生成两个树,判断一个字符串是不是另一个字符串的子串
class Solution(object):
def isSubtree(self, s, t):
ss = self.inorder(s)
st = self.inorder(t)
return st in ss
def inorder(self, root):
if not root:
return '#'
res = ''
res = res +'*'+str(root.val)
res += self.inorder(root.left)
res += self.inorder(root.right)
return res