算法day37 二叉树的层序遍历
题目描述

思路:队列
二叉树的层序遍历是二叉树遍历的经典问题,我们在对二叉树进行层序遍历时,队列的使用是非常合适的。我们记录每一层的节点个数,这样当出队时我们就可以知道上一层的节点是否出队完毕,而上一层的节点出队的同时,我们使这个节点的左右孩子加入到队列中,以此循环直到队列为空,将用以收集的二维数组返回。具体的代码如下。
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> res;
queue<TreeNode*> que;
if(root) que.push(root);
while(!que.empty()){
int size = que.size();
vector<int> vec;
while(size--){
TreeNode *node = que.front();
vec.push_back(node->val);
que.pop();
if(node->left){
que.push(node->left);
}
if(node->right){
que.push(node->right);
}
}
res.push_back(vec);
}
return res;
}
时间复杂度:O(m*n)
空间复杂度:O(m*n)
END
浙公网安备 33010602011771号