1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81  // @Title: 二叉树的层平均值 (Average of Levels in Binary Tree) // @Author: 15816537946@163.com // @Date: 2019-11-25 16:42:01 // @Runtime: 8 ms // @Memory: 6 MB /** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ /* func averageOfLevels(root *TreeNode) []float64 { } */ /* func averageOfLevels(root *TreeNode) []float64 { res := make([]float64, 0, 128) nodes := make([]float64, 1, 1024) fmt.Println("res ->",res) fmt.Println("node ->",nodes) return nil } */ /* func averageOfLevels(root *TreeNode) []float64 { res := make([]float64, 0, 128) nodes := make([]*TreeNode, 1, 1024) nodes[0] = root // 通过两个for操作，实现队列的功能 for len(nodes) > 0 { n := len(nodes) var sum int for i := 0; i < n; i++ { sum += nodes[i].Val if nodes[i].Left != nil { nodes = append(nodes, nodes[i].Left) } if nodes[i].Right != nil { nodes = append(nodes, nodes[i].Right) } } res = append(res, float64(sum)/float64(n)) nodes = nodes[n:] } return res } */ func averageOfLevels(root *TreeNode) []float64 { res := make([]float64, 0, 128) nodes := make([]*TreeNode, 1, 1024) nodes[0] = root for len(nodes) > 0 { var sum int n := len(nodes) for i := 0; i < n; i++ { sum += nodes[i].Val if nodes[i].Left != nil { nodes = append(nodes, nodes[i].Left) } if nodes[i].Right != nil { nodes = append(nodes, nodes[i].Right) } } res = append(res, float64(sum)/float64(n)) nodes = nodes[n:] } return res }