Skip to content

Instantly share code, notes, and snippets.

@shailrshah
Created October 21, 2017 19:30
Show Gist options
  • Save shailrshah/79f7df5d8600f601f5fd031f11916ed3 to your computer and use it in GitHub Desktop.
Save shailrshah/79f7df5d8600f601f5fd031f11916ed3 to your computer and use it in GitHub Desktop.
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
List<List<Integer>> answer = new ArrayList<>();
zigzagLevelOrderHelper(root, answer, 0);
return answer;
}
private void zigzagLevelOrderHelper(TreeNode root, List<List<Integer>> answer, int level) {
if(root == null)
return;
if(answer.size() == level)
answer.add(new ArrayList<Integer>());
if(level % 2 == 0)
answer.get(level).add(root.val);
else
answer.get(level).add(0, root.val);
zigzagLevelOrderHelper(root.left, answer, level + 1);
zigzagLevelOrderHelper(root.right, answer, level + 1);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment