给定一个二叉树,返回所有从根节点到叶子节点的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
输入:
1
/ \
2 3
\
5
输出: ["1->2->5", "1->3"]
解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-paths
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
很容易想到递归,如果遇到叶子节点,就将路径加入到路径集合中。
# Definition for a binary tree node.
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution(object):
def binaryTreePaths(self, root):
def dfs(root, path):
if root==None:
return
path += str(root.val)
if root.left==None and root.right==None:
paths.append(path)
path += "->"
dfs(root.left, path)
dfs(root.right, path)
paths = []
dfs(root, "")
return paths
可以看到,在binaryTreePaths方法里嵌套定义了递归函数dfs,根据字符串的值传递性质,采用递归可以深度优先遍历出所有叶节点的路径。