101. Symmetric Tree

Tree特定层内部的比较,肯定先想到level order traversal,那就直接BFS

但既然在练习DFS,就把DFS也写一下吧...这边不太一样的是每次加进stack的不是单个node,而是当前node pair分别的左右配对,这样就可以一直比较左右对称位置的node val

class Solution:
    def isSymmetric(self, root: TreeNode) -> bool:
        q = collections.deque([root])
        while q:
            n = len(q)
            level = []
            for _ in range(n):
                node = q.popleft()
                if node:
                    level.append(node.val)
                    q.append(node.left if node.left else None)
                    q.append(node.right if node.right else None)
                else:
                    level.append(None)
            for i in range(len(level)//2):
                if level[i] != level[-1-i]: return False
        return True

Last updated

Was this helpful?