假定s是大的树,判断t是否为s的子树:
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def isSubtree(self, s, t): #用于判断的主函数,递归得遍历s的每一个结点,并将其作为新的根节点,再与t进行比较
"""
:type s: TreeNode
:type t: TreeNode
:rtype: bool
"""
if not s:
return False
return self.isEqual(s,t) or self.isSubtree(s.left,t) or self.isSubtree(s.right,t)
#使用or相连,即其中只要有一个s的子树与t相同,则返回True
def isEqual(self,S,T): #以S为根节点,判断S和T是否相等
if not S and not T:
return True
if S and T:
if S.val!=T.val:
return False
return self.isEqual(S.left,T.left) and self.isEqual(S.right,T.right)
else:
return False