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

class Solution {
public:
	vector<vector<int>> levelOrder(TreeNode* root) {
		vector<vector<int>> output;
		if (root == NULL) return output;
		vector<int> levelVal;
		TreeNode* curNode;
		queue<TreeNode*> q;
		q.push(root);
		while (!q.empty()) {
			int length = q.size();
			for (int i = 0; i < length; i++) {
				curNode = q.front();
				q.pop();
				levelVal.push_back(curNode->val);
				if (curNode->left) {
					q.push(curNode->left);
				}
				if (curNode->right) {
					q.push(curNode->right);
				}
			}
			output.push_back(levelVal);
			levelVal.clear();
		}
		return output;
	}
};