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

