题目链接:102. 二叉树的层序遍历 - 力扣(LeetCode)
思路:用一个先进先出的队列来完成,每一层存入一个数组,最后再将每一层的数组总的存入一个数组。从根节点开始操作入队,当队列不为空的时候,循环以下操作:
确定当前的队列元素(即队列长度),有这么多个元素需要进行以下操作:
指针指向队头元素,队头元素出头,将队头元素放入层数组中,这个元素的左子树与右子树也需要进行相同的操作,即指针先后指向左孩子和右孩子
所以是双重循环,每一层需要操作,每个结点也要操作
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
queue<TreeNode*> que;
if(root != NULL) que.push(root);
vector<vector<int>> result;
while(!que.empty()){
int size = que.size();
vector<int>vec;
for(int i = 0; i < size; i++){
TreeNode *node = que.front();
que.pop();
vec.push_back(node->val);
if(node->left) que.push(node->left);
if(node->right) que.push(node->right);
}
result.push_back(vec);
}
return result;
}
};
今天尸体状态不是很好。。。。。