Subtree of Another Tree
这题没有明确说明是不是有多个一样值的结点,所以个人觉得应该先用前序遍历把所有和t的值相同的结点找出来,然后逐个用check函数对比
class Solution(object):
def isSubtree(self, s, t):
"""
:type s: TreeNode
:type t: TreeNode
:rtype: bool
"""
stack = [s]
lst = []
while stack:
node = stack.pop()
if node.val == t.val:
lst.append(node)
if node.right:
stack.append(node.right)
if node.left:
stack.append(node.left)
for node in lst:
if self.check(node, t):
return True
return False
def check(self, rootA, rootB):
if not rootA and not rootB:
return True
if not rootA or not rootB:
return False
if rootA.val != rootB.val:
return False
return self.check(rootA.left, rootB.left) and self.check(rootA.right, rootB.right)