diff --git a/problems/0257.二叉树的所有路径.md b/problems/0257.二叉树的所有路径.md index f6515a78..73387257 100644 --- a/problems/0257.二叉树的所有路径.md +++ b/problems/0257.二叉树的所有路径.md @@ -281,39 +281,47 @@ public: ## 其他语言版本 Java: -```java + +```Java class Solution { + /** + * 递归法 + */ public List binaryTreePaths(TreeNode root) { - LinkedList stack = new LinkedList<>(); - List list = new LinkedList<>(); - TreePaths(root,stack,list); - return list; + List res = new ArrayList<>(); + if (root == null) { + return res; + } + List paths = new ArrayList<>(); + traversal(root, paths, res); + return res; } - private static void TreePaths (TreeNode root, LinkedList path, List res) { - path.add(root); + private void traversal(TreeNode root, List paths, List res) { + paths.add(root.val); + // 叶子结点 if (root.left == null && root.right == null) { + // 输出 StringBuilder sb = new StringBuilder(); - for (TreeNode n : path) { - sb.append(n.val); - sb.append("->"); + for (int i = 0; i < paths.size() - 1; i++) { + sb.append(paths.get(i)).append("->"); } - sb.delete(sb.length()-2,sb.length()); + sb.append(paths.get(paths.size() - 1)); res.add(sb.toString()); return; } if (root.left != null) { - TreePaths(root.left, path, res); - path.removeLast(); + traversal(root.left, paths, res); + paths.remove(paths.size() - 1);// 回溯 } if (root.right != null) { - TreePaths(root.right, path, res); - path.removeLast(); + traversal(root.right, paths, res); + paths.remove(paths.size() - 1);// 回溯 } } } -``` +``` Python: