给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。
例:
输入:root = [1,2,3,null,5]
输出:["1->2->5","1->3"]
解析:
深度遍历,到叶子节点返回,然后一层一层的将节点值加在前面即可。
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def binaryTreePaths(self, root):
"""
:type root: TreeNode
:rtype: List[str]
"""
if not root: # 判断数是否为空
return []
if not root.left and not root.right: # 是否为叶子节点
return [str(root.val)] # 返回叶子节点
path = [] # 存储路径
if root.left: # 左子树
for i in self.binaryTreePaths(root.left): # 左子树中的所有路径
path.append(str(root.val) + '->' + i) # 在路径前面加上当前节点的值
if root.right: # 右子树
for i in self.binaryTreePaths(root.right):
path.append(str(root.val) + '->' + i)
return path
|