https://leetcode.com/problems/average-of-levels-in-binary-tree/description/
题解:给出一颗二叉树,要求返回一个集合List,包含每一层结点值的平均值。写一个search方法来遍历二叉树。用list参数保存每一层的结点总值,count参数保存每一层的结点个数,i参数表示当前层数,从0开始,root表示当前结点。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<Double> averageOfLevels(TreeNode root) {
List<Double> list = new ArrayList<>();
List<Integer> count = new ArrayList<>();
search(list, count, 0, root);
for(int i = list.size()-1; i >= 0; i--)
list.set(i, list.get(i)/count.get(i));
return list;
}
private void search(List<Double> list, List<Integer> count, int i, TreeNode root) {
if(root == null)
return;
if(i < list.size()) {
list.set(i, list.get(i)+root.val);
count.set(i, count.get(i)+1);
}else {
list.add(i, (double)root.val);
count.add(1);
}
search(list, count, i+1, root.left);
search(list, count, i+1, root.right);
}
}