题解 | 求二叉树的层序遍历
求二叉树的层序遍历
https://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: vector< vector<int> > ans; vector< int > temp; vector<vector<int> > levelOrder(TreeNode* root) { if(!root){ return {}; } queue<TreeNode*> q; q.push(root); int size = 1; int new_size = 0; while (!q.empty()) { //因为结果需要二维向量,每一层一个向量,使用了双层循环,内层添加一层的值,外层进行添加进ans,更新下一层的节点数,清空temp准备记录下一层; while ( size > 0 ) { TreeNode* node = q.front();q.pop(); temp.push_back(node->val); if (node->left) { q.push(node->left); new_size++; } if (node->right) { q.push(node->right); new_size++; } size--; } size = new_size; new_size = 0; ans.push_back(temp); temp.clear(); } return ans; } };