前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode - 左叶子之和

LeetCode - 左叶子之和

作者头像
晓痴
发布2019-09-17 11:18:59
6170
发布2019-09-17 11:18:59
举报
文章被收录于专栏:曌的晓痴曌的晓痴

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/

个人题解:

代码语言:javascript
复制
/**
 * 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呢?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 曌的晓痴 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档