leetcode medium : Binary Tree Zigzag level Order Traversal
Binary Tree Zigzag Level Order Traversal - LeetCode
Binary Tree Zigzag Level Order Traversal - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
전 포스팅(leetcode medium : binary Tree Level Order Traversal :: Keep your pace (tistory.com))
에서 풀었던 문제랑 크게 다를게 없는데? result 리스트에 추가할 때 뒤집어주기만 하면 되겠는걸?
class Solution:
def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not root:
return []
level = [root]
right = True
result = []
while level:
result.append(list(map(lambda x : x.val, level)) if right else reversed(list(map(lambda x : x.val, level))))
right = not right
nlevel = []
for node in level:
if node.left:
nlevel.append(node.left)
if node.right:
nlevel.append(node.right)
level = nlevel
return result
위 코드는 속도는 빠른데 가독성이 안좋다
class Solution:
def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not root:
return []
level = [root]
right = True
result = []
while level:
to_add = list(map(lambda x : x.val, level))
if right:
result.append(to_add)
else:
result.append(reversed(to_add))
right = not right
nlevel = []
for node in level:
if node.left:
nlevel.append(node.left)
if node.right:
nlevel.append(node.right)
level = nlevel
return result