lintcode--二叉树的所有路径

来源:互联网 发布:服装设计需要的软件 编辑:程序博客网 时间:2024/06/06 12:36

给一棵二叉树,找出从根节点到叶子节点的所有路径。

样例

给出下面这棵二叉树:

   1 /   \2     3 \  5

所有根到叶子的路径为:

[  "1->2->5",  "1->3"]
/** * Definition of TreeNode: * public class TreeNode { *     public int val; *     public TreeNode left, right; *     public TreeNode(int val) { *         this.val = val; *         this.left = this.right = null; *     } * } *///深度优先 可以转换成先序遍历:根左右,根结点遍历以后,遍历两个子树,是叶子结点的时候保存路径// version 1: Divide Conquer分治法public class Solution {    public List<String> binaryTreePaths(TreeNode root) {        List<String> paths = new ArrayList<>();        if (root == null) {            return paths;        }        List<String> leftPaths = binaryTreePaths(root.left);        List<String> rightPaths = binaryTreePaths(root.right);                for (String path : leftPaths) {            paths.add(root.val + "->" + path);        }        for (String path : rightPaths) {            paths.add(root.val + "->" + path);        }                // 如果root是叶子结点        if (paths.size() == 0) {            paths.add("" + root.val);        }                return paths;    }}
原创粉丝点击