interview_prepare_binarytree

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

おすすめ

転載: www.cnblogs.com/zijidan/p/12500314.html