LeetCode (15) - Binary Tree Zigzag Level Order Traversal(파이썬, python)

최대 1 분 소요

❓ 문제

Given the root of a binary tree, return the zigzag level order traversal of its nodes’ values. (i.e., from left to right, then right to left for the next level and alternate between).

Example 1:

img

Input: root = [3,9,20,null,null,15,7]
Output: [[3],[20,9],[15,7]]

Example 2:

Input: root = [1]
Output: [[1]]

Example 3:

Input: root = []
Output: []

Constraints:

  • The number of nodes in the tree is in the range [0, 2000].
  • -100 <= Node.val <= 100

Given Code

# 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 zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[int]:
        

내 풀이

# 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 zigzagLevelOrder(self, root):# Optional[TreeNode]) -> List[List[int]]:
        result = []
        def q(node, level):
            if node == None:
                return
            if len(result) < level:
                result.append([])
            result[level - 1].append(node.val)
            q(node.left, level + 1)
            q(node.right, level + 1)

        q(root, 1)
        
        
        cnt = 0
        for cnt in range(len(result)):
            if cnt % 2:
                result[cnt] = result[cnt][::-1]
        return result