美文网首页
257. Binary Tree Paths

257. Binary Tree Paths

作者: 衣介书生 | 来源:发表于2018-02-28 17:00 被阅读5次

    题目分析

    题目链接
    这道题目的要求是让我们返回一棵树的所有路径。示例如下:

    树结构:
      1
     /   \
    2     3
     \
      5
    
    返回:
    ["1->2->5", "1->3"]
    

    这道题目的关键就是能写出帮助函数,当前根节点的左右子树都不为空的时候要添加一条路径。子树为空的时候什么也不需要处理。子树不为空的时候递归寻找路径即可。

    代码

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public List<String> binaryTreePaths(TreeNode root) {
            List<String> res = new ArrayList<String>();
            if(root == null) {
                return res;
            }
            helper(root, String.valueOf(root.val), res);
            return res;
        }
        
        private void helper(TreeNode root, String path, List<String> res) {
            if(root == null) {
                return;
            }
            // 如果左右子树都不为空,则要添加一条路径(添加一条到当前结点的路径即可)
            if(root.left == null && root.right == null) {
                res.add(path);
                return;
            }
            if(root.left != null) {
                helper(root.left, path + "->" + String.valueOf(root.left.val), res);
            }
            if(root.right != null) {
                helper(root.right, path + "->" + String.valueOf(root.right.val), res);
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:257. Binary Tree Paths

          本文链接:https://www.haomeiwen.com/subject/xbxixftx.html