topic:
Topic links: https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/
Problem-solving ideas:
Similar sequence binary tree traversal method of a logic inversion need only after the odd elements are added to the result set
Code:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
if not root:
return []
res = []
stack = [root]
level = 0
while stack:
val_lst = []
for _ in range(len(stack)):
node = stack[0]
stack.pop(0)
val_lst.append(node.val)
if node.left:
stack.append(node.left)
if node.right:
stack.append(node.right)
if level == 1:
val_lst.reverse()
res.append(val_lst)
level ^= 1
return res