Cover image for Classic 150 Interview Questions P637 Average of Levels in Binary Tree

Classic 150 Interview Questions P637 Average of Levels in Binary Tree


Timeline

Timeline

2025-10-31

init

Level-order traversal

Problem:

Calculate averages via level-order traversal

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
struct TreeNode {	int val;	TreeNode *left;	TreeNode *right;	TreeNode()		: val(0)		, left(nullptr)		, right(nullptr)	{	}	TreeNode(int x)		: val(x)		, left(nullptr)		, right(nullptr)	{	}	TreeNode(int x, TreeNode *left, TreeNode *right)		: val(x)		, left(left)		, right(right)	{	}};#include <vector>#include <queue>using std::vector;using std::queue;class Solution {    public:	vector<double> averageOfLevels(TreeNode *root)	{		int i, n;		queue<TreeNode *> que;		vector<double> res;		TreeNode *p;		double curr;		if (root == nullptr) {			return res;		}		que.push(root);		while (!que.empty()) {			n = que.size();			curr = 0;			for (i = 0; i < n; i++) {				p = que.front();				que.pop();				curr = curr + p->val;				if (p->left)					que.push(p->left);				if (p->right)					que.push(p->right);			}			res.push_back(curr/n);		}		return res;	}};
Loading comments…