Update
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
<p align="center"><strong>欢迎大家<a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>
|
||||
|
||||
|
||||
## 404.左叶子之和
|
||||
# 404.左叶子之和
|
||||
|
||||
题目地址:https://leetcode-cn.com/problems/sum-of-left-leaves/
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||

|
||||
|
||||
## 思路
|
||||
# 思路
|
||||
|
||||
**首先要注意是判断左叶子,不是二叉树左侧节点,所以不要上来想着层序遍历。**
|
||||
|
||||
@@ -119,7 +119,7 @@ public:
|
||||
## 迭代法
|
||||
|
||||
|
||||
本题迭代法使用前中后序都是可以的,只要把左叶子节点统计出来,就可以了,那么参考文章 [二叉树:听说递归能做的,栈也能做!](https://mp.weixin.qq.com/s/c_zCrGHIVlBjUH_hJtghCg)和[二叉树:前中后序迭代方式的写法就不能统一一下么?](https://mp.weixin.qq.com/s/WKg0Ty1_3SZkztpHubZPRg)中的写法,可以写出一个前序遍历的迭代法。
|
||||
本题迭代法使用前中后序都是可以的,只要把左叶子节点统计出来,就可以了,那么参考文章 [二叉树:听说递归能做的,栈也能做!](https://mp.weixin.qq.com/s/OH7aCVJ5-Gi32PkNCoZk4A)和[二叉树:迭代法统一写法](https://mp.weixin.qq.com/s/ATQMPCpBlaAgrqdLDMVPZA)中的写法,可以写出一个前序遍历的迭代法。
|
||||
|
||||
判断条件都是一样的,代码如下:
|
||||
|
||||
@@ -146,7 +146,7 @@ public:
|
||||
};
|
||||
```
|
||||
|
||||
## 总结
|
||||
# 总结
|
||||
|
||||
这道题目要求左叶子之和,其实是比较绕的,因为不能判断本节点是不是左叶子节点。
|
||||
|
||||
@@ -157,9 +157,9 @@ public:
|
||||
希望通过这道题目,可以扩展大家对二叉树的解题思路。
|
||||
|
||||
|
||||
## 其他语言版本
|
||||
# 其他语言版本
|
||||
|
||||
Java:
|
||||
## Java
|
||||
|
||||
**递归**
|
||||
|
||||
@@ -204,7 +204,7 @@ class Solution {
|
||||
|
||||
|
||||
|
||||
Python:
|
||||
## Python
|
||||
|
||||
**递归**
|
||||
```python
|
||||
@@ -250,19 +250,11 @@ class Solution:
|
||||
return res
|
||||
```
|
||||
|
||||
Go:
|
||||
## Go
|
||||
|
||||
> 递归法
|
||||
**递归法**
|
||||
|
||||
```go
|
||||
/**
|
||||
* Definition for a binary tree node.
|
||||
* type TreeNode struct {
|
||||
* Val int
|
||||
* Left *TreeNode
|
||||
* Right *TreeNode
|
||||
* }
|
||||
*/
|
||||
func sumOfLeftLeaves(root *TreeNode) int {
|
||||
var res int
|
||||
findLeft(root,&res)
|
||||
@@ -282,17 +274,9 @@ func findLeft(root *TreeNode,res *int){
|
||||
}
|
||||
```
|
||||
|
||||
> 迭代法
|
||||
**迭代法**
|
||||
|
||||
```go
|
||||
/**
|
||||
* Definition for a binary tree node.
|
||||
* type TreeNode struct {
|
||||
* Val int
|
||||
* Left *TreeNode
|
||||
* Right *TreeNode
|
||||
* }
|
||||
*/
|
||||
func sumOfLeftLeaves(root *TreeNode) int {
|
||||
var res int
|
||||
queue:=list.New()
|
||||
@@ -317,8 +301,10 @@ func sumOfLeftLeaves(root *TreeNode) int {
|
||||
```
|
||||
|
||||
|
||||
JavaScript:
|
||||
递归版本
|
||||
## JavaScript
|
||||
|
||||
**递归法**
|
||||
|
||||
```javascript
|
||||
var sumOfLeftLeaves = function(root) {
|
||||
//采用后序遍历 递归遍历
|
||||
@@ -340,8 +326,9 @@ var sumOfLeftLeaves = function(root) {
|
||||
}
|
||||
return nodesSum(root);
|
||||
};
|
||||
```
|
||||
迭代版本
|
||||
```
|
||||
|
||||
**迭代法**
|
||||
```javascript
|
||||
var sumOfLeftLeaves = function(root) {
|
||||
//采用层序遍历
|
||||
|
||||
Reference in New Issue
Block a user