Algorithm/src/main/java/tree/BinaryTreePaths.java
2025-05-30 15:12:21 +08:00

40 lines
1.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package tree;
import java.util.ArrayList;
import java.util.List;
/**
* 题目: 257. 二叉树的所有路径 ( binaryTreePaths)
* 描述:给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
* 叶子节点 是指没有子节点的节点。
*
* 示例 1
输入root = [1,2,3,null,5]
输出:["1->2->5","1->3"]
* 链接https://leetcode.cn/problems/binary-tree-paths/
*/
public class BinaryTreePaths {
public List<String> binaryTreePaths(TreeNode root) {
List<String> res = new ArrayList<>();
if (root == null) return res;
StringBuilder sb = new StringBuilder();
dfs(root, sb, res);
return res;
}
private void dfs(TreeNode node, StringBuilder sb, List<String> res) {
int len = sb.length(); // 记录进入当前节点前的长度
sb.append(node.val);
// 如果是叶子节点
if (node.left == null && node.right == null) {
res.add(sb.toString());
} else {
sb.append("->");
if (node.left != null) dfs(node.left, sb, res);
if (node.right != null) dfs(node.right, sb, res);
}
sb.setLength(len); // 回溯:恢复到进入本节点前的状态
}
}