复杂度分析
记树上所有节点的个数为 n。
时间复杂度:每个点进队出队各一次,故渐进时间复杂度为 O(n)
空间复杂度:队列中元素的个数不超过 n个,故渐进空间复杂度为 O(n)
/**
* * Definition for a binary tree node.
* * struct TreeNode {
* * int val;
* * TreeNode *left;
* * TreeNode *right;
* * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* * };
* */
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> result;
if(root == nullptr) {
return result;
}
queue<TreeNode*> que;
que.push(root);
while(!que.empty()) {
queue<TreeNode*> temp_que;
vector<int> temp_result;
while(!que.empty()) {
TreeNode* node = que.front();
que.pop();
temp_result.push_back(node->val);
if(node->left) temp_que.push(node->left);
if(node->right) temp_que.push(node->right);
}
result.push_back(std::move(temp_result));
swap(que, temp_que);
}
return result;
}
};