给定一个二叉树,返回所有从根节点到叶子节点的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
输入:
1
/ \
2 3
\
5
输出: ["1->2->5", "1->3"]
解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3
思路:
当处理到某个结点时,如果它不为空,就把它的值加到当前路径上,然后处理它的左子树和右子树,
如果它为空,说明当前路径已经走到头,就可以把当前路径加到答案里。
# 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):
"""
:type root: TreeNode
:rtype: List[str]
"""
if not root:
return list()
res = list()
temp_res = str(root.val)
if not root.left and not root.right:
return [temp_res]
self.generate(root.left, str(root.val), res)
self.generate(root.right, str(root.val), res)
return res
def generate(self, node, temp_res, res):
if not node:
return
temp_res += "->" + str(node.val)
if not node.left and not node.right:
res.append(temp_res)
return
else:
self.generate(node.left, temp_res, res)
self.generate(node.right, temp_res, res)
return
下面写于2020年01月19日23:50:23
# 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):
"""
:type root: TreeNode
:rtype: List[str]
"""
if not root:
return []
self.res = []
def dfs(node, tmp):
if not node:
return
if not node.left and not node.right:
self.res.append(tmp + str(node.val))
return
dfs(node.left, tmp + str(node.val) + "->")
dfs(node.right, tmp + str(node.val) + "->")
dfs(root, "")
return self.res