Skip to content

Commit b4e2179

Browse files
authored
Update 0404.左叶子之和.md
进一步讨论迭代顺序可能性,实际提交显示前序遍历和后序遍历同样可以AC
1 parent 87f9a26 commit b4e2179

File tree

1 file changed

+32
-5
lines changed

1 file changed

+32
-5
lines changed

problems/0404.左叶子之和.md

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ if (node->left != NULL && node->left->left == NULL && node->left->right == NULL)
4242

4343
## 递归法
4444

45-
递归的遍历顺序为后序遍历(左右中),是因为要通过递归函数的返回值来累加求取左叶子数值之和。
45+
递归的遍历顺序为后序遍历(左右中),是因为要通过递归函数的返回值来累加求取左叶子数值之和。(前序遍历其实也同样AC)
4646

4747
递归三部曲:
4848

@@ -230,8 +230,8 @@ class Solution {
230230

231231
## Python
232232

233-
**递归**
234-
```python
233+
> 递归后序遍历
234+
```python3
235235
class Solution:
236236
def sumOfLeftLeaves(self, root: TreeNode) -> int:
237237
if not root:
@@ -246,9 +246,36 @@ class Solution:
246246

247247
return cur_left_leaf_val + left_left_leaves_sum + right_left_leaves_sum
248248
```
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+
# 需要通过中节点来判断其的左节点是否存在;左节点自己的左右节点也是否存在
249260
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
252279
class Solution:
253280
def sumOfLeftLeaves(self, root: TreeNode) -> int:
254281
"""

0 commit comments

Comments
 (0)