Merge branch 'master' into 513.找树左下角的值

This commit is contained in:
Kelvin
2021-07-29 13:52:39 -04:00

View File

@ -205,25 +205,51 @@ class Solution {
Python Python
```Python
**递归** **递归**
# Definition for a binary tree node. ```python
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution: class Solution:
def sumOfLeftLeaves(self, root: TreeNode) -> int: def sumOfLeftLeaves(self, root: TreeNode) -> int:
self.res=0 if not root:
def areleftleaves(root): return 0
if not root:return
if root.left and (not root.left.left) and (not root.left.right):self.res+=root.left.val left_left_leaves_sum = self.sumOfLeftLeaves(root.left) # 左
areleftleaves(root.left) right_left_leaves_sum = self.sumOfLeftLeaves(root.right) # 右
areleftleaves(root.right)
areleftleaves(root) cur_left_leaf_val = 0
return self.res if root.left and not root.left.left and not root.left.right:
cur_left_leaf_val = root.left.val # 中
return cur_left_leaf_val + left_left_leaves_sum + right_left_leaves_sum
``` ```
**迭代**
```python
class Solution:
def sumOfLeftLeaves(self, root: TreeNode) -> int:
"""
Idea: Each time check current node's left node.
If current node don't have one, skip it.
"""
stack = []
if root:
stack.append(root)
res = 0
while stack:
# 每次都把当前节点的左节点加进去.
cur_node = stack.pop()
if cur_node.left and not cur_node.left.left and not cur_node.left.right:
res += cur_node.left.val
if cur_node.left:
stack.append(cur_node.left)
if cur_node.right:
stack.append(cur_node.right)
return res
```
Go Go
> 递归法 > 递归法