bfs-二叉树层序遍历
求二叉树的层序遍历
http://www.nowcoder.com/questionTerminal/04a5560e43e24e9db4595865dc9c63a3
思路
二叉树层序遍历可以用bfs,而且由于是树结构所以不需要哈希表记录访问过的节点,直接套模板即可。
模板可见:bfs/dfs模板
class Solution {
public:
vector<vector<int> > levelOrder(TreeNode* root) {
// write code here
queue<TreeNode*> q;
vector<vector<int> > res;
if(!root) return res;
q.push(root);
while(!q.empty()){
vector<int> layer;
int size = q.size();
// 最开始图省事q.szie()放在了for循环里,这样就铁错了,背板也得注意细节XD
for(int i = 0; i < size; ++i) {
layer.emplace_back(q.front()->val);
if(q.front()->left) q.push(q.front()->left);
if(q.front()->right) q.push(q.front()->right);
q.pop();
}
res.emplace_back(layer);
}
return res;
}
};
查看16道真题和解析
