/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<String> binaryTreePaths(TreeNode root) {
List<String> list = new ArrayList<>();
if(root == null){
return list;
}
StringBuilder sb = new StringBuilder();
rec(list,root,sb);
return list;
}
public void rec(List<String> list,TreeNode root,StringBuilder sb){
if(root.left == null&&root.right == null){ //如果root没有左右子节点了,直接在sb.append()
sb.append(root.val);
list.add(sb.toString());
return ;
}
// root至少有一个节点
sb.append(root.val);
sb.append("->");
int orilen = sb.length();// 记住最开始的root到当前的root的距离。
if(root.left!=null) rec(list,root.left,sb);
sb.setLength(orilen);
if(root.right!=null) rec(list,root.right,sb);
}
}
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<String> binaryTreePaths(TreeNode root) {
List<String> list = new ArrayList<>();
if(root == null){
return list;
}
StringBuilder sb = new StringBuilder();
rec(list,root,sb);
return list;
}
public void rec(List<String> list,TreeNode root,StringBuilder sb){
if(root.left == null&&root.right == null){ //如果root没有左右子节点了,直接在sb.append()
sb.append(root.val);
list.add(sb.toString());
return ;
}
// root至少有一个节点
sb.append(root.val);
sb.append("->");
int orilen = sb.length();// 记住最开始的root到当前的root的距离。
if(root.left!=null) rec(list,root.left,sb);
sb.setLength(orilen);
if(root.right!=null) rec(list,root.right,sb);
}
}
本文介绍了一种用于寻找二叉树所有根节点到叶子节点路径的算法实现。通过递归方式,该方法能够有效地收集每一条路径,并将其转换为字符串形式返回。文章提供了完整的Java代码示例。
403

被折叠的 条评论
为什么被折叠?



