File tree Expand file tree Collapse file tree 1 file changed +32
-5
lines changed Expand file tree Collapse file tree 1 file changed +32
-5
lines changed Original file line number Diff line number Diff line change @@ -42,7 +42,7 @@ if (node->left != NULL && node->left->left == NULL && node->left->right == NULL)
42
42
43
43
## 递归法
44
44
45
- 递归的遍历顺序为后序遍历(左右中),是因为要通过递归函数的返回值来累加求取左叶子数值之和。。
45
+ 递归的遍历顺序为后序遍历(左右中),是因为要通过递归函数的返回值来累加求取左叶子数值之和。(前序遍历其实也同样AC)
46
46
47
47
递归三部曲:
48
48
@@ -230,8 +230,8 @@ class Solution {
230
230
231
231
## Python
232
232
233
- ** 递归 **
234
- ``` python
233
+ > 递归后序遍历
234
+ ```python3
235
235
class Solution :
236
236
def sumOfLeftLeaves(self, root: TreeNode) -> int:
237
237
if not root:
@@ -246,9 +246,36 @@ class Solution:
246
246
247
247
return cur_left_leaf_val + left_left_leaves_sum + right_left_leaves_sum
248
248
```
249
+ > 递归前序遍历
250
+ ```python3
251
+ # Definition for a binary tree node.
252
+ # class TreeNode:
253
+ # def __init__(self, val=0, left=None, right=None):
254
+ # self.val = val
255
+ # self.left = left
256
+ # self.right = right
257
+ class Solution:
258
+ def sumOfLeftLeaves(self, root: TreeNode) -> int:
259
+ # 需要通过中节点来判断其的左节点是否存在;左节点自己的左右节点也是否存在
249
260
250
- ** 迭代**
251
- ``` python
261
+ if not root: return 0
262
+
263
+ # 初始化left_leaf备用
264
+ left_leaf = 0
265
+ # 若当前节点的左孩子就是左叶子
266
+ if root.left and not root.left.left and not root.left.right:
267
+ left_leaf = root.left.val
268
+
269
+ left_left_leaves_sum = self.sumOfLeftLeaves(root.left)
270
+ right_left_leaves_sum = self.sumOfLeftLeaves(root.right)
271
+
272
+
273
+ return left_leaf + left_left_leaves_sum + right_left_leaves_sum
274
+ ```
275
+
276
+
277
+ > 迭代
278
+ ```python3
252
279
class Solution :
253
280
def sumOfLeftLeaves(self, root: TreeNode) -> int:
254
281
"""
You can’t perform that action at this time.
0 commit comments