利用队列的特性把每一层的节点出队并把下一层的节点入队即可,注意每一层的循环条件size要提前保存不能直接使用queue.size()因为队列的大小在变化因此无法判断每一层的出队情况
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> result;
queue<TreeNode*> w;
if (root)
w.push(root);
while (!w.empty()) {
vector<int> temp;
TreeNode* node;
int size = w.size();
for (int i = 0; i < size; i++) {
node = w.front();
temp.push_back(node->val);
if (node->left)
w.push(node->left);
if (node->right)
w.push(node->right);
w.pop();
}
result.push_back(temp);
}
return result;
}
};