题解 | 求二叉树的层序遍历 注意 队列的size可以发挥很大作用
求二叉树的层序遍历
https://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* };
*/
#include <queue>
#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return int整型vector<vector<>>
*/
vector<vector<int> > levelOrder(TreeNode* root) {
// write code here
vector<vector<int>> num;
if(root==nullptr)return num;
queue<TreeNode*> read;
read.push(root);
// int i=0;int j=1;
while(!read.empty()){
/*
int x=j;
j=0;
int k=0;
可以利用队列的size来获取参数
*/
int x=read.size();
vector<int> a;
int i=0;
while(i<x){
TreeNode* cur=read.front();
//num[i][k]=cur->val;
//二层容器不是这样用的 它本质是容器的容器。所以要push一个容器
a.push_back(cur->val);
read.pop();
if(cur->left){
read.push(cur->left);
//i++;//使用size 不需要i++了
}
if(cur->right){
read.push(cur->right);
//j++;
}
//k++;
i++;
}
//i++;
num.push_back(a);
}
return num;
}
};
查看18道真题和解析