给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。
public List binaryTreePaths(TreeNode root){
List result =new ArrayList<>();
if (null == root){
return result
}
List path =new ArrayList<>();
traversal(root,path,result);
return result;
}
//递归 确定参数、返回类型
private void traversal(TreeNode treeNode, List path, List result){
path.add(treeNode.val);
//终止条件
if (treeNode.left ==null && treeNode.right ==null){
//用来组装结果
StringBuilder sb =new StringBuilder();
for (int i=0; i<path.size()-1;i++){
sb.append(path.get(i)).append("->");
}
sb.append(path.get(path.size()-1));
result.add(sb.toString());
return;
}
//每层处理逻辑
if (treeNode.left !=null) {
traversal(treeNode.left, path, result);
path.remove(path.size()-1); //回溯
}
if (treeNode.right !=null) {
traversal(treeNode.right, path, result);
path.remove(path.size()-1); //回溯
}
}
}