Leetcode # 103. Binary Tree Zigzag Level Order Traversal
- 2024.04.21
- ★★ Medium Binary Tree Breadth-First Search LeetCode
Problem
https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/
Solution
Time Complexity: O(len(tree))
Space Complexity: O(sqrt(len(tree)))
(The input and output generally do not count towards the space complexity.)
⚠️ deque 不可以使用切片 [::-1] 來逆序
class Solution:
def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
curr_level = 0
curr_level_nodes = collections.deque([root] if root else [])
nodes = []
while curr_level_nodes:
next_level_nodes = collections.deque()
nodes.append([])
while curr_level_nodes:
node = curr_level_nodes.popleft() if curr_level % 2 == 0 else curr_level_nodes.pop()
nodes[-1].append(node.val)
for child in [node.left, node.right] if curr_level % 2 == 0 else [node.right, node.left]:
if child:
if curr_level % 2 == 0:
next_level_nodes.append(child)
else:
next_level_nodes.appendleft(child)
curr_level += 1
curr_level_nodes = next_level_nodes
return nodes
Last Updated on 2024/04/21 by A1go