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 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| class TreeNode { int val; TreeNode left; TreeNode right;
TreeNode(int x) { val = x; } }
class Solution { private final List<List<Integer>> res = new LinkedList<>();
public List<String> binaryTreePaths(TreeNode root) { if (root == null) { return new LinkedList<>(); } List<Integer> tmp = new LinkedList<>(); res.add(tmp); dfs(root, tmp); return generatePath(); }
private List<String> generatePath() { List<String> ans = new LinkedList<>(); for (List<Integer> path : res) { StringBuilder s = new StringBuilder(); for (var n : path) { s.append("->").append(n); } ans.add(s.substring(2)); } return ans; }
private void dfs(TreeNode root, List<Integer> tmp) { if (root == null) { return; } tmp.add(root.val); if (root.left != null && root.right != null) { List<Integer> tmp2 = new LinkedList<>(tmp); res.add(tmp2); dfs(root.left, tmp); dfs(root.right, tmp2); } else if (root.left != null) { dfs(root.left, tmp); } else if (root.right != null) { dfs(root.right, tmp); } } }
|