SymmetricTree
Published at 2021-11-20
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def isSymmetric(self, root: Optional[TreeNode]) -> bool:
stack = [root]
while True:
currLevel = [] # 현재 레벨의 모든 밸류들 쭉
tempStack = []
while stack:
node = stack.pop(0)
# 빈 노드일시 비었다는 뜻으로 범위밖값인 101을 넣어줌.
if not node:
currLevel.append(101)
continue
currLevel.append(node.val)
tempStack.append(node.left if node.left else None)
tempStack.append(node.right if node.right else None)
if not currLevel: break
reverse = currLevel[:]
reverse.reverse()
if currLevel != reverse: return False
stack = tempStack
return True
# 102. Binary Tree Level Order Traversal 응용