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:
3232
3333如果不入队特殊元素Null来表示每层的结束,则在while循环开始时保存当前队列的长度,以保证每次只遍历一层(参考下面的C++ Code)。
3434
35- > 如果采用递归方式,则需要将当前节点,当前所在的level以及结果数组传递给递归函数。在递归函数中,取出节点的值,添加到level参数对应结果数组元素中(参考下面的C++ Code)。
35+ > 如果采用递归方式,则需要将当前节点,当前所在的level以及结果数组传递给递归函数。在递归函数中,取出节点的值,添加到level参数对应结果数组元素中(参考下面的C++ Code 或 Python Code )。
3636
3737
3838## 关键点解析
@@ -47,7 +47,7 @@ return its level order traversal as:
4747
4848
4949## 代码
50- * 语言支持:JS,C++
50+ * 语言支持:JS,C++,Python3
5151
5252Javascript Code:
5353``` js
@@ -188,6 +188,40 @@ private:
188188 }
189189};
190190```
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+ ```
191225
192226## 相关题目
193227- [ 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:
4949
5050## 代码
5151
52- * 语言支持:JS,C++
52+ * 语言支持:JS,C++,Python3
5353
5454JavaScript Code:
5555
@@ -122,6 +122,37 @@ private:
122122 }
123123};
124124```
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+ ```
125156## 相关题目
126157
127158- [ 39.combination-sum] ( ./39.combination-sum.md )
You can’t perform that action at this time.
0 commit comments