mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
添加 404. 左叶子之和 Swift 版本
This commit is contained in:
@ -373,6 +373,54 @@ var sumOfLeftLeaves = function(root) {
|
||||
```
|
||||
|
||||
|
||||
## Swift
|
||||
|
||||
**递归法**
|
||||
```swift
|
||||
func sumOfLeftLeaves(_ root: TreeNode?) -> Int {
|
||||
guard let root = root else {
|
||||
return 0
|
||||
}
|
||||
|
||||
let leftValue = sumOfLeftLeaves(root.left)
|
||||
let rightValue = sumOfLeftLeaves(root.right)
|
||||
|
||||
var midValue: Int = 0
|
||||
if root.left != nil && root.left?.left == nil && root.left?.right == nil {
|
||||
midValue = root.left!.val
|
||||
}
|
||||
|
||||
let sum = midValue + leftValue + rightValue
|
||||
return sum
|
||||
}
|
||||
```
|
||||
**迭代法**
|
||||
```swift
|
||||
func sumOfLeftLeaves(_ root: TreeNode?) -> Int {
|
||||
guard let root = root else {
|
||||
return 0
|
||||
}
|
||||
|
||||
var stack = Array<TreeNode>()
|
||||
stack.append(root)
|
||||
var sum = 0
|
||||
|
||||
while !stack.isEmpty {
|
||||
let lastNode = stack.removeLast()
|
||||
|
||||
if lastNode.left != nil && lastNode.left?.left == nil && lastNode.left?.right == nil {
|
||||
sum += lastNode.left!.val
|
||||
}
|
||||
if let right = lastNode.right {
|
||||
stack.append(right)
|
||||
}
|
||||
if let left = lastNode.left {
|
||||
stack.append(left)
|
||||
}
|
||||
}
|
||||
return sum
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user