1、使用队列(queue)来模拟层序遍历
难点:循环判断条件的确立,需要什么一个条件进入循环。
本题两个循环条件,一个是队列不为空,另一个是当前层的元素个数
/**
* Definition for a binary tree node.
* struct TreeNode{
int val;
TreeNode* left;
TreeNode* right;
TreeNode():val(0),left(nullptr),right(nullptr){}
TreeNode(int x):val(x),left(nullptr),right(nullptr){}
TreeNode(int x,TreeNode* left,TreeNode* right):val(x),left(left),right(right){}
};
*/
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>>result;
if(root==NULL) return result;
queue<TreeNode*> que;
que.push(root);
while(!que.empty()){
int size=que.size();
vector<int>vec;
while(size--){
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;
}
};