题解 | #求二叉树的层序遍历#
求二叉树的层序遍历
http://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3
利用队列先进先出的特性,分别将二叉树各个层的结点保存进入队列,使用变量size保存每次队列中元素个数,以保证每一次进入循环后都可将队列清空,即每个结点都被遍历到。
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** * * @param root TreeNode类 * @return int整型vector<vector<>> */ vector<vector<int> > levelOrder(TreeNode* root) { // write code here vector<vector<int>> ans; vector<int> res; if (root == NULL) return ans; queue<TreeNode* > q; q.push(root); while (!q.empty()) { TreeNode* t; res.clear(); int size = q.size(); while (size--) { t = q.front(); q.pop(); res.push_back(t->val); if (t->left) q.push(t->left); if (t->right) q.push(t->right); } ans.push_back(res); } return ans; } };