1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| class Solution { public List<List<Integer>> BSTSequences(TreeNode root) { List<List<Integer>> resultList = new ArrayList<>(); List<Integer> path = new ArrayList<>(); List<TreeNode> queue = new LinkedList<>(); if (root != null) { queue.add(root); } bfs(resultList, path, queue); return resultList; }
private void bfs(List<List<Integer>> resultList, List<Integer> path, List<TreeNode> queue) { if (queue.isEmpty()) { resultList.add(new ArrayList<>(path)); }
for (int i = 0; i < queue.size(); i++) { TreeNode node = queue.remove(i); path.add(node.val); if (node.left != null) { queue.add(node.left); } if (node.right != null) { queue.add(node.right); } bfs(resultList, path, queue); if (node.right != null) { queue.remove(queue.size() - 1); } if (node.left != null) { queue.remove(queue.size() - 1); } path.remove(path.size() - 1); queue.add(i, node); } } }
|