LeetCode404. 左叶子之和Golang版
1. 问题描述
计算给定二叉树的所有左叶子之和。
2. 思路
2.1. 递归
- 确定参数和返回值
func sumOfLeftLeaves(root *TreeNode) int
- 确定终止条件
if root == nil {
return 0
}
- 确定单层递归逻辑
leftValue := sumOfLeftLeaves(root.Left)
rightValue := sumOfLeftLeaves(root.Right)
midValue := 0
if root.Left != nil && root.Left.Left == nil && root.Left.Right == nil {
midValue = root.Left.Val
}
sum := leftValue + rightValue + midValue
return sum
3. 代码
3.1. 递归代码
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func sumOfLeftLeaves(root *TreeNode) int {
if root == nil {
return 0
}
leftValue := sumOfLeftLeaves(root.Left)
rightValue := sumOfLeftLeaves(root.Right)
midValue := 0
if root.Left != nil && root.Left.Left == nil && root.Left.Right == nil {
midValue = root.Left.Val
}
sum := leftValue + rightValue + midValue
return sum
}