二叉树的层次遍历
二叉树的层次遍历
采用队列先进先出的特性
step1:先把根节点push进去
step2.1:如果队列不为空,当前队列的size即为这一层总共的Node数,即将队列前size个node放入同一层
step2.2:在2.1步骤放入新Node的过程中,如果新Node有孩子,需要将其孩子push进队列中
涉及到的api:
队列定义:std::queue<T>
队列大小:.size()
推入队列:.push(ele)
移出队列:.pop(ele)
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
std::vector<std::vector<int> > res;
if (root == NULL)
{
return res;
}
std::queue<TreeNode*> myqueue;
myqueue.push(root);
while (!myqueue.empty())
{
std::vector<int> vec_lev;
int count = myqueue.size();
while (count > 0)
{
TreeNode* node = myqueue.front();
myqueue.pop();
vec_lev.push_back(node->val);
if (node->left != NULL)
{
myqueue.push(node->left);
}
if (node->right != NULL)
{
myqueue.push(node->right);
}
count--;
}
res.push_back(vec_lev);
}
return res;
}
};