Open youngyangyang04 opened 5 months ago
class Solution {
public List<String> binaryTreePaths(TreeNode root) {
List<String> paths = new ArrayList<>();
traverse(root, "", paths);
return paths;
}
private void traverse(TreeNode node, String path, List<String> paths) {
path += node.val;
if (node.left == null && node.right == null) {
paths.add(path);
} else {
path += "->";
if (node.left != null) { // 递归左子树
traverse(node.left, path, paths);
}
if (node.right != null) { // 回溯, 递归右子树
traverse(node.right, path, paths);
}
}
}
}
class Solution {
public List
贡献一个好玩的版本:
public List<String> binaryTreePaths(TreeNode node) {
if (node == null)
return List.of();
if (node.left == null && node.right == null) {
return List.of(Integer.toString(node.val));
} else {
var lpaths = binaryTreePaths(node.left);
var rpaths = binaryTreePaths(node.right);
return Stream
.concat(lpaths.stream(), rpaths.stream())
.map(str -> node.val + "->" + str)
.toList();
}
}
https://www.programmercarl.com/0257.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%89%80%E6%9C%89%E8%B7%AF%E5%BE%84.html