二叉树的层序遍历
题目描述
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
算法描述
其实层序遍历非常好理解,只要学会一道题目,其他的就都能融会贯通了;
大概思路就是从左往右遍历每一层,这里面利用到队列,从根节点开始,每次遍历都把节点按照从左到右的顺序放入队列,然后从头部取出;
对于每一层,我们采用遍历完同一层再遍历下一层的方式,这样就可以实现二叉树的层序遍历。
题解
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> ans;
if(root == nullptr){
return ans;
}
queue<TreeNode*> q;
q.push(root);
while(!q.empty()){
int n = q.size();
ans.push_back(vector<int> ());
for(int i = 0; i < n; i++){
TreeNode* cur = q.front();
q.pop();
ans.back().push_back(cur->val);
if(cur->left){
q.push(cur->left);
}
if(cur->right){
q.push(cur->right);
}
}
}
return ans;
}
};
总结
层序遍历有很多题目,这些题目的总体访问思想是一样的,就是处理的操作有少许不同。
830

被折叠的 条评论
为什么被折叠?



