#  257. Binary Tree Paths
**<font color=red>难度: 简单</font>**

## 刷题内容

> 原题连接

* https://leetcode.com/problems/binary-tree-paths/description/

> 内容描述

```
Given a binary tree, return all root-to-leaf paths.

Note: A leaf is a node with no children.

Example:

Input:

   1
 /   \
2     3
 \
  5

Output: ["1->2->5", "1->3"]

Explanation: All root-to-leaf paths are: 1->2->5, 1->3
```

## 解题方案

> 思路 1

递归+DFS

```python
class Solution(object):
    def binaryTreePaths(self, root):
        """
        :type root: TreeNode
        :rtype: List[str]
        """
        def helper(node, cur_path):
            if not node.left and not node.right: ## 到leaf了
                res.append(cur_path+[node.val])
                return
            if node.left:
                helper(node.left, cur_path+[node.val])
            if node.right:
                helper(node.right, cur_path+[node.val])

        res = []  
        if not root:
            return res
        helper(root, [])
        
        return ['->'.join([str(val) for val in path]) for path in res]
```
注意一点，很多人可能看到这里有好几次cur_path+[node.val]，觉得干嘛不直接写在最开头了，事实是这样做的话cur_path就已经变化了，因为要执行完if node.left才去执行if node.right，此时cur_path就不是原来的cur_path了。






















