Given a binary tree, return all root-to-leaf paths.
For example, given the following binary tree:
1
/ \
2 3
\
5
All root-to-leaf paths are:
["1->2->5", "1->3"]
public class Solution {
public List<String> binaryTreePaths(TreeNode root) {
List<String> res=new ArrayList<String>();
if(root==null) return res;
StringBuilder temp=new StringBuilder("");
if(root.left==null && root.right==null)
{ res.add(String.valueOf(root.val));
return res;
}
getPath(root,temp,res);
return res;
}
public void getPath(TreeNode root,StringBuilder temp,List<String> res)
{
if(root==null) return;
if(root.left==null && root.right==null)
{
temp.append("->"+String.valueOf(root.val)) ;
res.add(new String(temp.toString()));
//将路径加入结果集中之后,删除叶节点,返回上一层父节点
temp.delete(temp.toString().lastIndexOf("->"),temp.length());
return ;
}
if(temp.toString().equals(""))
{
temp.append(String.valueOf(root.val));
}else {
temp.append("->"+String.valueOf(root.val));
}
if(root.left!=null) getPath(root.left,temp,res);
if(root.right!=null) getPath(root.right,temp,res);
//左右两边都遍历完了,那么当前结点就可以删除了
if(temp.toString().lastIndexOf("->")!=-1)
temp.delete(temp.toString().lastIndexOf("->"),temp.length());
else temp.delete(0,temp.length());
}
}