临沂网站制作公司6,支付宝网站登录入口,Wordpress查找替换插件,网站开发信息文档目录 知识点Leetcode代码#xff1a;ACM模式代码#xff1a; 知识点
vector、queue容器的操作
对vectorint vec;做插入元素操作#xff1a;vec.push_back(x)。对queueTreeNode* que;做插入元素操作#xff1a;que.push(root);。队列有四个常用的操作ACM模式代码 知识点
vector、queue容器的操作
对vectorint vec;做插入元素操作vec.push_back(x)。对queueTreeNode* que;做插入元素操作que.push(root);。队列有四个常用的操作push、pop、front、back其中push方法用于在队列的尾部插入一个元素而pop方法用于移除队列的头部元素。front方法返回队列的第一个元素的引用而back方法返回队列的最后一个元素的引用。
使用auto关键字来自动推断数据类型
for (const auto level : result) {for (int val : level) {cout val ;}cout endl;
}Leetcode代码
/*** 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:vectorvectorint levelOrder(TreeNode* root) {queueTreeNode* que; // 辅助的队列vectorvectorint result; // 存放最后结果if(root){que.push(root);}while(!que.empty()){int size que.size(); // 每一层的节点个数也是后面循环的次数vectorint vec; // 存放每一层的节点值for(int i 0; i size; i){TreeNode* tmp que.front();que.pop();vec.push_back(tmp-val);if(tmp-left){que.push(tmp-left);}if(tmp-right){que.push(tmp-right);}}result.push_back(vec);}return result;}
};ACM模式代码
#include iostream
#include vector
#include queue
using namespace std;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:vectorvectorint levelOrder(TreeNode* root) {queueTreeNode* que; // 辅助的队列vectorvectorint result; // 存放最后结果if (root) {que.push(root);}while (!que.empty()) {int size que.size(); // 每一层的节点个数也是后面循环的次数vectorint vec; // 存放每一层的节点值for (int i 0; i size; i) {TreeNode* tmp que.front();que.pop();vec.push_back(tmp-val);if (tmp-left) {que.push(tmp-left);}if (tmp-right) {que.push(tmp-right);}}result.push_back(vec);}return result;}
};int main() {// 测试代码TreeNode* root new TreeNode(3);root-left new TreeNode(9);root-right new TreeNode(20);root-left-left new TreeNode(7);root-left-right new TreeNode(11);root-right-left new TreeNode(15);root-right-right new TreeNode(7);Solution solution;vectorvectorint result solution.levelOrder(root);for (const auto level : result) {for (int val : level) {cout val ;}cout endl;}return 0;
}
测试用二叉树如下