LeetCode第404题,难度简单。这又是一题用Go语言写的,其实Go语言也挺快的。
原题地址:https://leetcode-cn.com/problems/sum-of-left-leaves/
题目描述:
计算给定二叉树的所有左叶子之和。
注意啊,是所有的左叶子。
解题思路:
这题采用递归的方式是很简单,只需要注意好结束的条件就可以了。
首先判断当前节点是不是nil,也就是空节点,如果是空节点,那直接返回就可以了;然后再判断当前节点的左子树是不是叶子节点,如果是叶子节点,那就加上当前子树的左子树的节点值,否则递归调用该子树的左右子树;
我怀疑我慢的原因在于,没有用好else,浪费了时间和空间去做无用的递归
中文官网题解:
https://leetcode-cn.com/problems/sum-of-left-leaves/solution/
个人题解:
/**
* 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
}
sum := 0
if root.Left != nil && root.Left.Left == nil && root.Left.Right == nil {
sum += root.Left.Val
}
sum += sumOfLeftLeaves(root.Left)
sum += sumOfLeftLeaves(root.Right)
return sum
}
结果:
同样是递归,为什么别人都是0ms,我确是3ms呢?