题目描述
Given a binary tree, return all root-to-leaf paths.
Note: A leaf is a node with no children.
Example:
Input: 1 / \ 2 3 \ 5 Output: ["1->2->5", "1->3"] Explanation: All root-to-leaf paths are: 1->2->5, 1->3
思路:
本题同https://blog.csdn.net/orangefly0214/article/details/83904226,只不过我们需要在递归的遍历这颗二叉树的时候把它对应的路径存储下来即可。
实现1:
List<String> ret=new ArrayList<>();
List<Integer> path=new ArrayList<>();
public List<String> binaryTreePaths(TreeNode root) {
if(root==null){
return ret;
}
path.add(root.val);
if(root.left==null&&root.right==null){
ret.add(fun(path));
path.remove(path.size()-1);
return ret;
}
binaryTreePaths(root.left);
binaryTreePaths(root.right);
path.remove(path.size()-1);
return ret;
}
private String fun(List<Integer> path){
String s="";
for(int i=0;i<path.size();i++){
if(i!=0){
s+="->"+path.get(i);
}else {
s+=path.get(i);
}
}
return s;
}
实现2:
private void bfs(TreeNode root,String path,List<String> ret){
if(root.left==null&&root.right==null){
ret.add(path+root.val);
}
if(root.left!=null){
bfs(root.left,path+root.val+"->",ret);
}
if(root.right!=null){
bfs(root.right,path+root.val+"->",ret);
}
}