diff --git a/java/0103-binary-tree-zigzag-level-order-traversal.java b/java/0103-binary-tree-zigzag-level-order-traversal.java new file mode 100644 index 000000000..ef7deddd5 --- /dev/null +++ b/java/0103-binary-tree-zigzag-level-order-traversal.java @@ -0,0 +1,30 @@ +class Solution { + boolean reverse = false; // flag to detrmine the direction left or right + List> sol = new ArrayList>(); + public List> zigzagLevelOrder(TreeNode root) { + if(root == null){return sol;} + Queue queue = new LinkedList<>(); + queue.add(root); + while( !queue.isEmpty()){ + List temp = new ArrayList(); + int size =queue.size(); + for(int i=0; i < size; i++){ + TreeNode node = queue.poll(); + temp.add(node.val); + if(node.left != null){ + queue.add(node.left); + } + if(node.right != null){ + queue.add(node.right); + } + } + if(reverse){ + Collections.reverse(temp); + } + reverse = !reverse; + sol.add(temp); + } + return sol; + } + +} \ No newline at end of file