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?