mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 19:44:45 +08:00
Update 0404.左叶子之和.md
进一步讨论迭代顺序可能性,实际提交显示前序遍历和后序遍历同样可以AC
This commit is contained in:
@ -42,7 +42,7 @@ if (node->left != NULL && node->left->left == NULL && node->left->right == NULL)
|
||||
|
||||
## 递归法
|
||||
|
||||
递归的遍历顺序为后序遍历(左右中),是因为要通过递归函数的返回值来累加求取左叶子数值之和。。
|
||||
递归的遍历顺序为后序遍历(左右中),是因为要通过递归函数的返回值来累加求取左叶子数值之和。(前序遍历其实也同样AC)
|
||||
|
||||
递归三部曲:
|
||||
|
||||
@ -230,8 +230,8 @@ class Solution {
|
||||
|
||||
## Python
|
||||
|
||||
**递归**
|
||||
```python
|
||||
> 递归后序遍历
|
||||
```python3
|
||||
class Solution:
|
||||
def sumOfLeftLeaves(self, root: TreeNode) -> int:
|
||||
if not root:
|
||||
@ -246,9 +246,36 @@ class Solution:
|
||||
|
||||
return cur_left_leaf_val + left_left_leaves_sum + right_left_leaves_sum
|
||||
```
|
||||
> 递归前序遍历
|
||||
```python3
|
||||
# Definition for a binary tree node.
|
||||
# class TreeNode:
|
||||
# def __init__(self, val=0, left=None, right=None):
|
||||
# self.val = val
|
||||
# self.left = left
|
||||
# self.right = right
|
||||
class Solution:
|
||||
def sumOfLeftLeaves(self, root: TreeNode) -> int:
|
||||
# 需要通过中节点来判断其的左节点是否存在;左节点自己的左右节点也是否存在
|
||||
|
||||
**迭代**
|
||||
```python
|
||||
if not root: return 0
|
||||
|
||||
# 初始化left_leaf备用
|
||||
left_leaf = 0
|
||||
# 若当前节点的左孩子就是左叶子
|
||||
if root.left and not root.left.left and not root.left.right:
|
||||
left_leaf = root.left.val
|
||||
|
||||
left_left_leaves_sum = self.sumOfLeftLeaves(root.left)
|
||||
right_left_leaves_sum = self.sumOfLeftLeaves(root.right)
|
||||
|
||||
|
||||
return left_leaf + left_left_leaves_sum + right_left_leaves_sum
|
||||
```
|
||||
|
||||
|
||||
> 迭代
|
||||
```python3
|
||||
class Solution:
|
||||
def sumOfLeftLeaves(self, root: TreeNode) -> int:
|
||||
"""
|
||||
|
Reference in New Issue
Block a user