LeetCode – 左叶子之和
- 2019 年 10 月 4 日
- 筆記
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呢?
