题解 | #求二叉树的层序遍历#
求二叉树的层序遍历
https://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
#include <deque>
#include <vector>
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型vector<vector<>>
*/
// 层次遍历
vector<vector<int> > levelOrder(TreeNode* root) {
// write code here
std::vector<std::vector<int > > arr;
if(root == nullptr) return arr;
std::deque<TreeNode* > deq;
int i = 1; //表示他的层次个数
std::vector<int > temparr;
TreeNode* p = root;//用来接收队头元素
deq.push_back(p);
while(!deq.empty())
{
//我们将一层的个数统计
i = deq.size();
temparr.clear();
//这个循环处理一层
while(i--)
{
//出队一个元素
p = deq.front();
deq.pop_front();
//添加该元素到temparr
temparr.push_back(p->val);
//添加他的左右子树到队列
if(p->left != nullptr) deq.push_back(p->left);
if(p->right != nullptr) deq.push_back(p->right);
}
//将这一层的数据添加到二维数组
arr.push_back(temparr);
}
return arr;
}
};
查看13道真题和解析