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)

results matching ""

    No results matching ""