【前言】
今天是刷题打卡第51天!
加油鸭伙伴们。
原题:二叉树的层序遍历 II (BFS)
原题链接:力扣
题目描述:
示例:
思路:
大家先看一下层序遍历这篇博文,直接将最后存放到二维数组中的数据反转即可。
代码执行:
/** * 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>> levelOrderBottom(TreeNode* root) { //定义一个队列 queue<TreeNode*>q; //定义一个二维数组用于返回结果 vector<vector<int> >ans; //先将根节点入队 if(root) q.push(root); while(!q.empty()) { //定义一个一维数组用于存放每一层节点的值 vector<int>temp; int n = q.size();//队列的长度 for(int i = 0; i < n; i++) { //访问队首元素 TreeNode* t = q.front(); //队首元素出队 q.pop(); //将队首元素的值存放到一维数组中 temp.push_back(t->val); //访问左子树 if(t->left) q.push(t->left); //访问右子树 if(t->right) q.push(t->right); } ans.push_back(temp); } reverse(ans.begin(), ans.end());//反转二维数组中的结果 return ans; } };
结语
今天是刷题打卡第51天!
加油吧少年。