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; } };