首页 > 其他 > 详细

Binary Tree Paths Leetcode

时间:2017-01-29 12:30:44      阅读:267      评论:0      收藏:0      [点我收藏+]

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"]
 
 
这道题做了半天。。。一开始我的思路是,从下往上,每一条路径上加上root的value,然而写了半天没写出来。。。后来看了下top solution里面有一个人和我想法一样,但写的代码真的十分精巧,我当时是用helper function但是用了两个参数,它这里没有用helper function。不知道怎么想出来的= =
 
排名第一的top solution是从上往下的原则,每一次把当前的path传给递归的function,这样到叶子就截止了,funcition的返回值是void的。以后遇到问题可以从上往下,从下往上都想想,参数的个数也可以多加几个,不要局限于一种思路出不来。
 
从上往下:
public class Solution {
    public List<String> binaryTreePaths(TreeNode root) {
        List<String> res = new ArrayList<>();
        if (root != null) {
            paths(res, "", root);
        }
        return res;
    }
    public void paths(List<String> res, String path, TreeNode root) {
        if (root.left == null && root.right == null) {
            res.add(path + root.val);
            return;
        }
        if (root.left != null) {
            paths(res, path + root.val + "->", root.left);
        }
        if (root.right != null) {
            paths(res, path + root.val + "->" , root.right);
        }
    }
}

从下往上:

public class Solution {
    public List<String> binaryTreePaths(TreeNode root) {
        List<String> res = new ArrayList<>();
        if (root == null) {
            return res;
        }
        if (root.left == null && root.right == null) {
            res.add(root.val + "");
            return res;
        }
        for (String path : binaryTreePaths(root.left)) {
            res.add(root.val + "->" + path);
        }
        for (String path : binaryTreePaths(root.right)) {
            res.add(root.val + "->" + path);
        }
        return res;
    }
}

这个方法是每次都新建一个list,然后对返回的所有list前面加上root的值,思路很简单,但这个实现之前没见过。。。

再次遇到也不知道能不能写出来。。。需要回顾。

Binary Tree Paths Leetcode

原文:http://www.cnblogs.com/aprilyang/p/6357418.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!