力扣HOT100之二叉树:102. 二叉树的层序遍历
这道题太简单了,相当于基础的模板题,但凡涉及到层序遍历一定会用到队列来实现,其他的倒没啥好说的,用两层while
循环来层序遍历,外层while
循环用于控制访问二叉树的每一层,而内层while
循环则负责收割每一层的元素,将其加入到一个一维向量中,当内层while
循环结束时,直接将收割的一维向量加入到二维向量即可。直接把这种套路记住就可以了。
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> result;queue<TreeNode*> My_Queue;//根节点非空则将其加入队列if(root) My_Queue.push(root);while(!My_Queue.empty()){int size = My_Queue.size();vector<int> temp;while(size > 0){TreeNode* node = My_Queue.front();My_Queue.pop();size--;temp.emplace_back(node -> val);if(node -> left) My_Queue.push(node -> left);if(node -> right) My_Queue.push(node -> right);}result.emplace_back(temp);}return result;}
};