https://leetcode.cn/problems/binary-tree-level-order-traversal/description/

<aside> 💡

使用 队列 进行实现,注意点是使用一个size临时量记录一层节点的个数

</aside>

vector<vector<int>> levelOrder(TreeNode* root) {
	vector<vector<int>> ans;
	vector<int> temp;
	int size;
	TreeNode* cur;
	queue<TreeNode*> que;

	if (root)
		que.push(root);
	// 队列不为空则继续遍历
	// 队列为空,说明当层已经没有元素了,退出遍历
	while (!que.empty()) {
		// 之后的循环会改变队列大小,先使用临时量记录此时的大小
		// 此时的队列大小即为当层节点的数量
		size = que.size();
		temp.clear();
		// 遍历当层所有节点,并将下一层的节点存入队列
		for (int i = 0; i < size; ++i) {
			cur = que.front();
			que.pop();
			temp.push_back(cur->val);
			if (cur->left)
				que.push(cur->left);
			if (cur->right)
				que.push(cur->right);
		}
		ans.push_back(temp);
	}
	return ans;
}