0x00 题目
输入:
3
/
9 20
/
15 7
输出:[3, 14.5, 11]
解释:
第 0
层的平均值是 3
, 第 1
层是 14.5
, 第 2
层是 11
因此返回 [3, 14.5, 11]
0x01 思路
要求出每层的 平均值
那就得先求每层的 和
以及每层的节点 总个数
0x02 解法
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 averageOfLevels(_ root: TreeNode?) -> [Double] {
guard let root = root else { return [] }
// 用来存储每层的节点
var queue: [TreeNode] = []
queue.append(root)
// 用来存储平均值
var result: [Double] = []
while !queue.isEmpty {
// 用来存储下一层的所有节点
var tmp: [TreeNode] = []
// 当前层的 和
var sum = 0
// 当前层的 个数
let count = Double(queue.count)
// 获取下一层的所有节点
while !queue.isEmpty {
let node = queue.removeFirst()
// 同时计算和
sum += node.val
if let left = node.left {
tmp.append(left)
}
if let right = node.right {
tmp.append(right)
}
}
// 切换到下一层
queue = tmp
// 当前层的平均值
result.append(Double(sum)/count)
}
return result
}
五笔小程序
原文地址:https://blog.csdn.net/xjh093/article/details/122358859
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_12629.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。