0
点赞
收藏
分享

微信扫一扫

【二叉树】层数最深叶子节点的和


0x00 题目

给你一棵二叉树的根节点 ​​root​​​ 请你返回 ​​层数最深​​ 的叶子节点的和

0x01 思路

层数最深,需要使用​​层序​​​遍历
​​​叶子​​节点和,需要判断是否是叶子节点

0x02 解法

语言:​​Swift​

树节点:​​TreeNode​

public class TreeNode {
public var val: Int
public var left: TreeNode?
public var right: TreeNode?
public init() { self.val = 0; self.left = nil; self.right = nil; }
public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
self.val = val
self.left = left
self.right = right
}
}

解法:

func deepestLeavesSum(_ root: TreeNode?) -> Int {
guard let root = root else { return 0 }

var res = 0
var queue: [TreeNode?] = []
queue.append(root)

while !queue.isEmpty {
var temp: [TreeNode?] = []
var maxVal = 0

while !queue.isEmpty {
let node = queue.removeFirst()
// 是叶子节点
if node?.left == nil && node?.right == nil {
maxVal += node!.val
}

if let left = node!.left {
temp.append(left)
}
if let right = node!.right {
temp.append(right)
}
}

res = maxVal
queue = temp
}

return res
}

0x03 我的作品

欢迎体验我的作品之一:​​小程序XWubi​​​ 五笔学习好帮手!
​微信​​ 搜索即可~


举报

相关推荐

0 条评论