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呢?