public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) {
        // write your code here
        ArrayList<ArrayList<Integer>> res = new ArrayList<>();
        if (root == null) return res;
        Queue<TreeNode> q = new LinkedList<>();
        q.add(root);
        boolean reverse = false;

        while (!q.isEmpty()) {
            ArrayList<Integer> level = new ArrayList<>();
            int size = q.size();

            for (int i = 0; i < size; i++) {
                TreeNode tmp = q.poll();
                level.add(tmp.val);
                if (tmp.left != null)  q.offer(tmp.left);
                if (tmp.right != null) q.offer(tmp.right);
            }
            if (reverse) {
                Collections.reverse(level);
                reverse = false;
            } else {
                reverse = true;
            }
            res.add(level);
        }
        return res;
    }

results matching ""

    No results matching ""