File tree Expand file tree Collapse file tree 2 files changed +68
-3
lines changed Expand file tree Collapse file tree 2 files changed +68
-3
lines changed Original file line number Diff line number Diff line change @@ -32,7 +32,7 @@ return its level order traversal as:
32
32
33
33
如果不入队特殊元素Null来表示每层的结束,则在while循环开始时保存当前队列的长度,以保证每次只遍历一层(参考下面的C++ Code)。
34
34
35
- > 如果采用递归方式,则需要将当前节点,当前所在的level以及结果数组传递给递归函数。在递归函数中,取出节点的值,添加到level参数对应结果数组元素中(参考下面的C++ Code)。
35
+ > 如果采用递归方式,则需要将当前节点,当前所在的level以及结果数组传递给递归函数。在递归函数中,取出节点的值,添加到level参数对应结果数组元素中(参考下面的C++ Code 或 Python Code )。
36
36
37
37
38
38
## 关键点解析
@@ -47,7 +47,7 @@ return its level order traversal as:
47
47
48
48
49
49
## 代码
50
- * 语言支持:JS,C++
50
+ * 语言支持:JS,C++,Python3
51
51
52
52
Javascript Code:
53
53
``` js
@@ -188,6 +188,40 @@ private:
188
188
}
189
189
};
190
190
```
191
+ Python Code:
192
+ ```python
193
+ # Definition for a binary tree node.
194
+ # class TreeNode:
195
+ # def __init__(self, x):
196
+ # self.val = x
197
+ # self.left = None
198
+ # self.right = None
199
+
200
+ class Solution:
201
+ def levelOrder(self, root: TreeNode) -> List[List[int]]:
202
+ """递归法"""
203
+ if root is None:
204
+ return []
205
+
206
+ result = []
207
+
208
+ def add_to_result(level, node):
209
+ """递归函数
210
+ :param level int 当前在二叉树的层次
211
+ :param node TreeNode 当前节点
212
+ """
213
+ if level > len(result) - 1:
214
+ result.append([])
215
+
216
+ result[level].append(node.val)
217
+ if node.left:
218
+ add_to_result(level+1, node.left)
219
+ if node.right:
220
+ add_to_result(level+1, node.right)
221
+
222
+ add_to_result(0, root)
223
+ return result
224
+ ```
191
225
192
226
## 相关题目
193
227
- [ 103.binary-tree-zigzag-level-order-traversal] ( ./103.binary-tree-zigzag-level-order-traversal.md )
Original file line number Diff line number Diff line change @@ -49,7 +49,7 @@ Return:
49
49
50
50
## 代码
51
51
52
- * 语言支持:JS,C++
52
+ * 语言支持:JS,C++,Python3
53
53
54
54
JavaScript Code:
55
55
@@ -122,6 +122,37 @@ private:
122
122
}
123
123
};
124
124
```
125
+ ```python
126
+ # Definition for a binary tree node.
127
+ # class TreeNode:
128
+ # def __init__(self, x):
129
+ # self.val = x
130
+ # self.left = None
131
+ # self.right = None
132
+
133
+ class Solution:
134
+ def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]:
135
+ if not root:
136
+ return []
137
+
138
+ result = []
139
+
140
+ def trace_node(pre_list, left_sum, node):
141
+ new_list = pre_list.copy()
142
+ new_list.append(node.val)
143
+ if not node.left and not node.right:
144
+ # 这个判断可以和上面的合并,但分开写会快几毫秒,可以省去一些不必要的判断
145
+ if left_sum == node.val:
146
+ result.append(new_list)
147
+ else:
148
+ if node.left:
149
+ trace_node(new_list, left_sum-node.val, node.left)
150
+ if node.right:
151
+ trace_node(new_list, left_sum-node.val, node.right)
152
+
153
+ trace_node([], sum, root)
154
+ return result
155
+ ```
125
156
## 相关题目
126
157
127
158
- [ 39.combination-sum] ( ./39.combination-sum.md )
You can’t perform that action at this time.
0 commit comments