1.pathSum
1 クラスツリーノード: 2 DEF __init__ (自己、X): 3 self.val = X 4 self.left = なし 5 self.right = なし 6 7 8 クラスソリューション: 9つの DEF DFS(自己、ルート、目標、パス): 10 IF(root.left ==なしとroot.right ==なしとroot.val +合計(パス)==ターゲット): 11 self.res.append(パス+ [root.val]) 1つの 2 リターン 13 14 もし(root.left): 15 self.dfs(root.left、ターゲット、パス+ [root.val]) 16 17 であれば(root.right): 18 self.dfs(root.right、ターゲット、パス+ [root.val]) 19 20 デフpathSum_dfs(自己、ルート、目標): 21 self.res = [] 22 であれば(ありませんルート): 23 リターン[] 24 25 self.dfs(ルート、目標、[]) 26 27 戻りself.res 28 29 30 31 32ルート=ツリーノード(5 ) 33 L11 =ツリーノード(4 ) 34 L12 =ツリーノード(8 ) 35L21 =ツリーノード(11 ) 36 L23 =ツリーノード(13 ) 37 L24 =ツリーノード(4 ) 38 L31 =ツリーノード(7 ) 39 L32 =ツリーノード(2 ) 40 L35 =ツリーノード(5 ) 41 L36 =ツリーノード(1 ) 42 43 root.left = L11 44 root.right = L12 45 l11.left = L21 46 l12.left = L23 47 l12.right = L24 48 l21.left = L31 49 l21.right = L32 50 l24.left = L35 51 l24.right = L36 52 53 プリント(溶液()。pathSum_dfs(ルート22))
#バイナリツリーノードのための定義。
#クラスのTreeNode(オブジェクト):
#デフ__init __(自己、X):
#self.val = X
#self.left =なし
#self.right =なし
クラス
のソリューション(
オブジェクト
):
デフ
DFS(
自己
、根、ターゲット、パス):
もし
(root.left ==
なし
と
root.right ==
なし
と
root.val +の
合計
(パス)==ターゲット):
自己
.res.append(パス+ [root.val])
リターン
もし
(root.left):
自己
.dfs(root.left、ターゲット、パス+ [root.val])
もし
(root.right):
self.dfs(root.right,target,path+[root.val])
def pathSum(
self, root,
sum):
self.res=[]
if(
not root):
return []
self.dfs(root,
sum,[])
return
self.res