輸入一顆二叉樹的根節點和一個整數,打印出二叉樹中節點值的和爲輸入整數的所有路徑。路徑定義爲從樹的根節點開始往下已知到葉節點所經過的節點所形成的一條路徑。在返回值的list中,數組長度大的數組靠前。
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
import copy
class Solution:
def FindPath(self, root, expectNumber):
if root == None:
return []
ret = []
supportArrayList = [[root.val]] # 對於每個節點來說,保存其路徑,保存的是node的值
support = [root] # 當前的node,保存的是node,用來做廣度優先遍歷
while support:
tmpNode = support[0]
tmpArrayList = supportArrayList[0]
if tmpNode.left == None and tmpNode.right == None:
if sum(tmpArrayList) == expectNumber:
ret.insert(0, tmpArrayList)
if tmpNode.left:
support.append(tmpNode.left)
newTmpArrayList = copy.copy(tmpArrayList)
newTmpArrayList.append(tmpNode.left.val)
supportArrayList.append(newTmpArrayList)
if tmpNode.right:
support.append(tmpNode.right)
newTmpArrayList = copy.copy(tmpArrayList)
newTmpArrayList.append(newTmpArrayList)
supportArrayList.append(newTmpArrayList)
del supportArrayList[0]
del support[0]
return ret