Update 0102:优化二叉树的层序遍历中637题的go方法

This commit is contained in:
marspere
2022-08-19 13:50:48 +08:00
parent 4f71ddc10f
commit 33c0797386

View File

@ -1054,40 +1054,34 @@ go:
637. 二叉树的层平均值 637. 二叉树的层平均值
*/ */
func averageOfLevels(root *TreeNode) []float64 { func averageOfLevels(root *TreeNode) []float64 {
res:=[][]int{} if root == nil {
var finRes []float64 // 防止为空
if root==nil{//防止为空 return nil
return finRes
} }
queue:=list.New() res := make([]float64, 0)
queue := list.New()
queue.PushBack(root) queue.PushBack(root)
var tmpArr []int
for queue.Len()>0 { var sum int
length:=queue.Len()//保存当前层的长度,然后处理当前层(十分重要,防止添加下层元素影响判断层中元素的个数) for queue.Len() > 0 {
for i:=0;i<length;i++{ //保存当前层的长度,然后处理当前层(十分重要,防止添加下层元素影响判断层中元素的个数)
node:=queue.Remove(queue.Front()).(*TreeNode)//出队列 length := queue.Len()
if node.Left!=nil{ for i := 0; i < length; i++ {
node := queue.Remove(queue.Front()).(*TreeNode)
if node.Left != nil {
queue.PushBack(node.Left) queue.PushBack(node.Left)
} }
if node.Right!=nil{ if node.Right != nil {
queue.PushBack(node.Right) queue.PushBack(node.Right)
} }
tmpArr=append(tmpArr,node.Val)//将值加入本层切片中 // 当前层元素求和
sum += node.Val
} }
res=append(res,tmpArr)//放入结果集 // 计算每层的平均值,将结果添加到响应结果中
tmpArr=[]int{}//清空层的数据 res = append(res, float64(sum)/float64(length))
sum = 0 // 清空该层的数据
} }
//计算每层的平均值 return res
length:=len(res)
for i:=0;i<length;i++{
var sum int
for j:=0;j<len(res[i]);j++{
sum+=res[i][j]
}
tmp:=float64(sum)/float64(len(res[i]))
finRes=append(finRes,tmp)//将平均值放入结果集合
}
return finRes
} }
``` ```