알고리즘/leetcode

103. Binary Tree Zigzag Level Order Traversal(Medium)

1.5볼트 2023. 2. 19. 13:40
728x90

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).

root이진 트리가 주어 지면 노드 값의 지그재그 수준 순회를 반환합니다 . (즉, 왼쪽에서 오른쪽으로, 다음 레벨은 오른쪽에서 왼쪽으로 그리고 그 사이를 번갈아 가며).

이진 트리에서 한단계 내려갈때마다 왼쪽에서 오른쪽으로 출력 그 다음단계는 오른쪽에서 왼쪽으로 출력하는 문제

일단 한층씩 내려가면서 같은층 원소는 한 리스트에 넣어가면서 이중리스트를 만든다 그리고 홀수번째 리스트들만 원소들을 뒤집으면 지그재그 완성

# 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]]:
        t=[]

        def f(root,n):
            if len(t)<n:
                t.append([])

            if root==None:
                return

            t[n-1].append(root.val)
            f(root.left,n+1)
            f(root.right,n+1)

        f(root,1)
        for i in range(1,len(t),2):
            t[i]=t[i][::-1]

        return t[:-1]