Problem :

https://leetcode.com/problems/symmetric-tree/description/


My Solution :

# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None

class Solution:
def isSymmetric(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
stack = [root, root]
while stack:
n1 = stack.pop()
n2 = stack.pop()
if (n1 and n2) is None:
if n1 is n2:
continue
return False
if n1.val != n2.val:
return False
stack.extend([n1.left, n2.right, n1.right, n2.left])
return True


Comment :

stack을 사용하느냐 queue를 사용하느냐는 DFS, BFS 차이일 뿐이다. 아무튼 트리가 대칭인지 보려면 왼쪽의 오른쪽 자식과 오른쪽의 왼쪽 자식이 같아야 한다. 마찬가지로 왼쪽의 왼쪽 자식은 오른쪽의 오른쪽 자식과 같아야 한다. 그걸 Iterative로 접근한 것.