0103. Binary Tree Zigzag Level Order Traversal
https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal
Description
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
ac1: DFS
interchange of List and LinkedList
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<List<Integer>>();
helper(res, root, 0);
return res;
}
private void helper(List<List<Integer>> res, TreeNode root, int level){
if (root == null) return;
if (res.size() <= level) res.add(new LinkedList<Integer>());
if (level % 2 == 0) {
res.get(level).add(root.val);
} else {
((LinkedList<Integer>)res.get(level)).addFirst(root.val);
}
helper(res, root.left, level+1);
helper(res, root.right, level+1);
}
}
ac2: BFS
Last updated
Was this helpful?