public List<List<Integer>> zigzagLevelOrderDFS(TreeNode root) { List<Deque<Integer>> res = new ArrayList<>(); dfs(root, 0, true, res); List<List<Integer>> ans = new ArrayList<>(); for (Deque<Integer> re : res) { ans.add(new LinkedList<>(re)); } return ans; }
privatevoiddfs(TreeNode root, int i, boolean isLeft, List<Deque<Integer>> ans){ if (root == null) return; if (ans.size() == i) { ans.add(new LinkedList<>()); } if (isLeft) { ans.get(i).addLast(root.val); } else { ans.get(i).addFirst(root.val); } dfs(root.left, i + 1, !isLeft, ans); dfs(root.right, i + 1, !isLeft, ans); }