varaverageOfLevels=function(root){let q =[];let i =0;let map =newMap;q.push({ r: root, i });while(q.length >0){let{ r, i }= q.shift();if(r){i++;if(r.left){q.push({ r: r.left, i });}if(r.right){q.push({ r: r.right, i });}// 改動部分, 使用map結構存儲層次的 鍵值對if(map.has(i)){let arr = map.get(i);arr.push(r.val);map.set(i, arr);}else{map.set(i,[r.val]);}}}for(let[i, key]of map){console.log(i, key);}};
上面完成了將每層的層號和值作為鍵值對放入map結構中.
下面修改末尾的for(let [i, key] of map)內部,使其滿足題目的需求
let retArr =[];for(let[i, key]of map){let sum =0;if(key.length >1){for(let i =0; i < key.length; i++){sum += key[i];}}else{sum = key[0];}retArr[i -1]= sum / key.length;}return retArr