Zigzag Traversal (medium)
Problem Statement
Given a binary tree, populate an array to represent its zigzag level order traversal. You should populate the values of all nodes of the first level from left to right, then right to left for the next level and keep alternating in the same manner for the following levels.
Example 1:
Example 2:
Try it yourself
Try solving this question here:
import java.util.*;class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) {val = x;}};class ZigzagTraversal {public static List<List<Integer>> traverse(TreeNode root) {List<List<Integer>> result = new ArrayList<List<Integer>>();// TODO: Write your code herereturn result;}public static void main(String[] args) {TreeNode root = new TreeNode(12);root.left = new TreeNode(7);root.right = new TreeNode(1);root.left.left = new TreeNode(9);root.right.left = new TreeNode(10);root.right.right = new TreeNode(5);root.right.left.left = new TreeNode(20);root.right.left.right = new TreeNode(17);List<List<Integer>> result = ZigzagTraversal.traverse(root);System.out.println("Zigzag traversal: " + result);}}
Solution
This problem follows the Binary Tree Level Order Traversal pattern. We can follow the same BFS approach. The only additional step we have to keep in mind is to alternate the level order traversal, which means that for every other level, we will traverse similar to ...