572. Subtree of Another Tree
# 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):
"""
:type s: TreeNode
:type t: TreeNode
:rtype: bool
"""
if s == None:
return False
if self.isSame(s, t):
return True
else:
return self.isSubtree(s.left, t) or self.isSubtree(s.right, t)
def isSame(self, s, t):
if s == None and t == None:
return True
elif s == None or t == None:
return False
elif s.val != t.val:
return False
else:
return self.isSame(s.left, t.left) and self.isSame(s.right, t.right)
如果是判断子结构,不是子树
# 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):
"""
:type s: TreeNode
:type t: TreeNode
:rtype: bool
"""
if s == None:
return False
if self.isSame(s, t):
return True
else:
return self.isSubtree(s.left, t) or self.isSubtree(s.right, t)
def isSame(self, s, t):
if t == None:
return True
elif s == None:
return False
elif s.val != t.val:
return False
else:
return self.isSame(s.left, t.left) and self.isSame(s.right, t.right)