From 026f8ca7b4c189dac475ea2b8f93923c8abfed89 Mon Sep 17 00:00:00 2001 From: hbingzhi Date: Sat, 21 Jan 2023 17:25:14 +0800 Subject: [PATCH] =?UTF-8?q?257.=E7=BB=99Java=E8=A7=A3=E6=B3=95=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=9B=B4=E5=85=A8=E9=9D=A2=E6=B8=85=E6=99=B0=E7=9A=84?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=EF=BC=8C=E5=8F=A6=E4=BF=AE=E6=94=B9=E4=B8=80?= =?UTF-8?q?=E5=A4=84=E9=87=8D=E5=A4=8D=E7=9A=84=E7=AC=94=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0257.二叉树的所有路径.md | 26 ++++++++++++----------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/problems/0257.二叉树的所有路径.md b/problems/0257.二叉树的所有路径.md index d0c190a0..68434479 100644 --- a/problems/0257.二叉树的所有路径.md +++ b/problems/0257.二叉树的所有路径.md @@ -34,7 +34,7 @@ ## 递归 -1. 递归函数函数参数以及返回值 +1. 递归函数参数以及返回值 要传入根节点,记录每一条路径的path,和存放结果集的result,这里递归不需要返回值,代码如下: @@ -259,7 +259,7 @@ if (cur->right) { path.pop_back(); // 回溯 '>' path.pop_back(); // 回溯 '-' } -``` +``` 整体代码如下: @@ -395,33 +395,34 @@ class Solution { * 递归法 */ public List binaryTreePaths(TreeNode root) { - List res = new ArrayList<>(); + List res = new ArrayList<>();// 存最终的结果 if (root == null) { return res; } - List paths = new ArrayList<>(); + List paths = new ArrayList<>();// 作为结果中的路径 traversal(root, paths, res); return res; } private void traversal(TreeNode root, List paths, List res) { - paths.add(root.val); - // 叶子结点 + paths.add(root.val);// 前序遍历,中 + // 遇到叶子结点 if (root.left == null && root.right == null) { // 输出 - StringBuilder sb = new StringBuilder(); + StringBuilder sb = new StringBuilder();// StringBuilder用来拼接字符串,速度更快 for (int i = 0; i < paths.size() - 1; i++) { sb.append(paths.get(i)).append("->"); } - sb.append(paths.get(paths.size() - 1)); - res.add(sb.toString()); + sb.append(paths.get(paths.size() - 1));// 记录最后一个节点 + res.add(sb.toString());// 收集一个路径 return; } - if (root.left != null) { + // 递归和回溯是同时进行,所以要放在同一个花括号里 + if (root.left != null) { // 左 traversal(root.left, paths, res); paths.remove(paths.size() - 1);// 回溯 } - if (root.right != null) { + if (root.right != null) { // 右 traversal(root.right, paths, res); paths.remove(paths.size() - 1);// 回溯 } @@ -794,7 +795,7 @@ object Solution { } } ``` - + rust: ```rust @@ -826,3 +827,4 @@ impl Solution { +