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:
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
Solution:
# 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]]:
levels = []
if root is None:
return []
def levelOrder(root, level):
if level == len(levels):
levels.append([])
if level % 2 == 0:
levels[level].append(root.val)
else:
levels[level].insert(0,root.val)
if root.left:
levelOrder(root.left, level+1)
if root.right:
levelOrder(root.right, level+1)
levelOrder(root,0)
return levels
'LeetCode' 카테고리의 다른 글
[LeetCode] 21. Merge Two Sorted Lists (0) | 2022.01.04 |
---|---|
[Leetcode] 23. Merge k Sorted Lists (0) | 2022.01.04 |
[Leetcode] 49. Group Anagrams (0) | 2022.01.01 |
[Leetcode] 54. Spiral Matrix (0) | 2022.01.01 |
448. Find All Numbers Disappeared in an Array (0) | 2021.07.13 |
댓글