1. 題目
2. 解答
定義一個存放樹中數據的向量 data,一個存放樹的每一層數據的向量 level_data 和一個存放每一層節點的隊列 node_queue。
如果根節點非空,根節點進隊,然後循環以下過程直至隊列爲空:
- 得到隊列的大小,即爲樹中當前層的節點個數。隊列元素循環出隊,並將節點的值加入 level_data,如果節點有左右子節點,左右子節點入隊
- 將 level_data 加入 data 中並清空 level_data
/**
* 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>> data;
vector<int> level_data;
queue<TreeNode *> node_queue;
int node_num = 1;
TreeNode* temp = NULL;
if (root) node_queue.push(root);
while (!node_queue.empty())
{
node_num = node_queue.size();
for (int i = 0; i < node_num; i++)
{
temp = node_queue.front();
node_queue.pop();
level_data.push_back(temp->val);
if (temp->left) node_queue.push(temp->left);
if (temp->right) node_queue.push(temp->right);
}
data.push_back(level_data);
level_data.clear();
}
return data;
}
};
獲取更多精彩,請關注「seniusen」!