1.题目

给定一个二叉树,返回所有从根节点到叶子节点的路径。

说明: 叶子节点是指没有子节点的节点。

示例:

  1. 输入:
  2. 1
  3. / \
  4. 2 3
  5. \
  6. 5
  7. 输出: ["1->2->5", "1->3"]
  8. 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3

2.思路

还是那句话,二叉树首先去想遍历(DFS)

    public List<String> binaryTreePaths(TreeNode root) {
        List<String> res = new ArrayList<>();
        dfs(root, "", res);
        return res;
    }

    private void dfs(TreeNode root, String path, List<String> res) {
        //如果为空,直接返回
        if (root == null)
            return;
        //如果是叶子节点,说明找到了一条路径,把它加入到res中
        if (root.left == null && root.right == null) {
            res.add(path + root.val);
            return;
        }
        //如果不是叶子节点,在分别遍历他的左右子节点
        dfs(root.left, path + root.val + "->", res);
        dfs(root.right, path + root.val + "->", res);
    }