[LeetCode][Python3] 101. Symmetric Tree
2018. 9. 27. 00:20 |
프로그래밍/LeetCode
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로 접근한 것.
'프로그래밍 > LeetCode' 카테고리의 다른 글
[LeetCode][Python3] 141. Linked List Cycle (0) | 2018.09.28 |
---|---|
[LeetCode][Python3] 136. Single Number (0) | 2018.09.27 |
[LeetCode][Python3] 121. Best Time to Buy and Sell Stock (0) | 2018.09.27 |
[LeetCode][Python3] 104. Maximum Depth of Binary Tree (0) | 2018.09.27 |
[LeetCode][Python3] 100. Same Tree (0) | 2018.09.26 |
[LeetCode][Python3] 70. Climbing Stairs (0) | 2018.09.26 |
[LeetCode][Python3] 3. Longest Substring Without Repeating Characters (0) | 2018.09.24 |
[LeetCode][Python3] 2. Add Two Numbers (0) | 2018.09.24 |
최근에 달린 댓글 최근에 달린 댓글