public class Solution { public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) { // Start typing your Java solution below // DO NOT write main() function ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>(); ArrayList<TreeNode> current = new ArrayList<TreeNode>(); if(root == null) return result; current.add(root); boolean order = true; while(!current.isEmpty()){ ArrayList<TreeNode> nextlevel = new ArrayList<TreeNode>(); ArrayList<Integer> list= new ArrayList<Integer>(); for(TreeNode n:current){ list.add(n.val); } for(int i = current.size()-1;i>=0 ;i--){ TreeNode n = current.get(i); // get each node from current level;
if(order){ if(n.right!=null) nextlevel.add(n.right); if(n.left !=null) nextlevel.add(n.left); } else{ if(n.left !=null) nextlevel.add(n.left); if(n.right!=null) nextlevel.add(n.right); } } order = order?false:true; //change false to true and vice versa
result.add(list); current = nextlevel; } return result; } }
mistakes: TreeNode n = current.get(i); // get each node from current level; change false to true and vice versa