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"]
转载出处
http://segmentfault.com/a/1190000003465753
原来文章还有其他解法
递归法
public class Solution {
List<String> list=new ArrayList<String>();//注意一下LinkedList和ArrayList的异同,这儿都可以用
public List<String> binaryTreePaths(TreeNode root) {
if(root!=null)
getPaths(root,String.valueOf(root.val));//String.valueOf把Int转成了String,下边递归调用的时候不用是因为String相加默认是String
return list;//比较巧妙,包括了root为null的情况
}
public void getPaths(TreeNode t,String path) {
if(t.left==null&&t.right==null) list.add(path);//遍历时一直记录路径,直到为叶子节点的时候才赋值给list返回
if(t.left!=null) getPaths(t.left,path+"->"+t.left.val);//不能用else if,细心缜密啊
if(t.right!=null) getPaths(t.right,path+"->"+t.right.val);
}
}