public List<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>> ans = new ArrayList<List<Integer>>(); if (root == null) return ans; List<TreeNode> parents = new LinkedList<TreeNode>(); parents.add(root); boolean right = true; while (parents.isEmpty() == false) { List<TreeNode> children = new LinkedList<TreeNode>(); for (int i = 0 ; i < parents.size(); ++i) { root = parents.get(i); if (root.left != null) children.add(root.left); if (root.right != null) children.add(root.right); } List<Integer> temp = new ArrayList<Integer>(); if (right) { for (int i = 0; i < parents.size(); ++i) { temp.add(parents.get(i).val); } } else { for (int i = parents.size() - 1; i >= 0; --i) { temp.add(parents.get(i).val); } } right = !right; ans.add(temp); parents = children; } return ans; }
近期评论