原題
給一棵二叉樹疾牲,找出從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)的所有路徑匆背。
樣例
給出下面這棵二叉樹:
1
/ \
2 3
\
5
所有根到葉子的路徑為:
[
"1->2->5",
"1->3"
]
解題思路
- 二叉樹遍歷問題
- 如果當(dāng)前節(jié)點(diǎn)的左兒子和右兒子都為None => 說(shuō)明當(dāng)前節(jié)點(diǎn)為一個(gè)根節(jié)點(diǎn)剧包,輸出一條路徑
- 如果當(dāng)前節(jié)點(diǎn)有左兒子裂明,帶著path向左進(jìn)行亿蒸。如果有右兒子贞铣,帶著path向右進(jìn)行
完整代碼
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# @param {TreeNode} root
# @return {string[]}
def binaryTreePaths(self, root):
if not root:
return []
res = []
self.helper(root, [], res)
return res
def helper(self, root, path, res):
if root.left is None and root.right is None:
res.append("".join(path + [str(root.val)]))
return
if root.left:
self.helper(root.left, path + [str(root.val)+"->"], res)
if root.right:
self.helper(root.right, path + [str(root.val)+"->"], res)