Binary Tree Paths return all root-to-leaf paths.

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);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值