当前位置: 首页 > news >正文

网站服务器费用明细苏州企业网站制作多少钱

网站服务器费用明细,苏州企业网站制作多少钱,淘宝推广怎么推,齐齐哈尔做网站公司二叉树的层序遍历相当于图论的广度优先搜索#xff0c;用队列来实现 #xff08;二叉树的递归遍历相当于图论的深度优先搜索#xff09; 102.二叉树的层序遍历 给你二叉树的根节点 root #xff0c;返回其节点值的 层序遍历 。 #xff08;即逐层地#xff0c;从左到右…二叉树的层序遍历相当于图论的广度优先搜索用队列来实现 二叉树的递归遍历相当于图论的深度优先搜索 102.二叉树的层序遍历 给你二叉树的根节点 root 返回其节点值的 层序遍历 。 即逐层地从左到右访问所有节点。 示例 1 输入root [3,9,20,null,null,15,7] 输出[[3],[9,20],[15,7]] 思路解析 层序遍历的核心思想 层序遍历或广度优先搜索BFS是通过逐层访问节点来遍历树。通常利用 队列queue 数据结构完成每次处理一层的所有节点然后将下一层的节点加入队列。 算法步骤 特殊情况处理 如果树为空root nullptr直接返回空的二维数组。初始化队列 创建一个队列 que将根节点 root 入队。逐层遍历 每次记录当前队列的大小size代表当前层的节点数量。遍历这一层的节点依次从队列中取出节点存入当前层的结果数组vec。如果节点有左子节点或右子节点将其加入队列作为下一层要访问的节点。记录结果 将当前层的结果数组 vec 添加到最终结果数组 result 中。重复上述过程直到队列为空。返回结果 最终返回存储每一层节点值的二维数组 result。 que 是一个存储 TreeNode* 类型的队列 /*** 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) {}* };*/ #include vector #include queue using namespace std;class Solution { public:vectorvectorint levelOrder(TreeNode* root) {vectorvectorint result; // 用于存储最终的层序遍历结果if (root nullptr) return result; // 如果根节点为空返回空的结果queueTreeNode* que; // 队列用于辅助层序遍历que.push(root); // 将根节点加入队列while (!que.empty()) {int size que.size(); // 当前层的节点数量vectorint vec; // 用于存储当前层的节点值for (int i 0; i size; i) {TreeNode* node que.front(); // 取出队首节点que.pop(); // 弹出队首节点vec.push_back(node-val); // 存储当前节点的值// 将左子节点加入队列if (node-left) {que.push(node-left);}// 将右子节点加入队列if (node-right) {que.push(node-right);}}result.push_back(vec); // 将当前层的节点值存入结果中}return result; // 返回最终结果} };107.二叉树的层序遍历|| 给你二叉树的根节点 root 返回其节点值 自底向上的层序遍历 。 即按从叶子节点所在层到根节点所在的层逐层从左向右遍历 示例 1 输入root [3,9,20,null,null,15,7] 输出[[15,7],[9,20],[3]]思路我们可以先进行标准的层序遍历然后将结果逆序。 只需在return result前多加一个 reverse(result.begin(), result.end()); 199.二叉树的右视图 给定一个二叉树的 根节点 root想象自己站在它的右侧按照从顶部到底部的顺序返回从右侧所能看到的节点值。 示例 1 输入root [1,2,3,null,5,null,4] 输出[1,3,4] 解释 思路就是其他的元素都不存入只存入一行中最右边的那个元素 if (i size - 1) {result.push_back(node-val);} 所以最后的result就不是二维数组而是一维数组来存入元素 #include vector #include queue using namespace std;class Solution { public:vectorint rightSideView(TreeNode* root) {vectorint result; // 用于存储右视图的节点值if (root nullptr) return result; // 如果树为空直接返回空的结果queueTreeNode* que; // 队列用于辅助层序遍历que.push(root); // 根节点入队while (!que.empty()) {int size que.size(); // 当前层的节点数量for (int i 0; i size; i) {TreeNode* node que.front(); // 获取队首节点que.pop(); // 弹出队首节点// 如果是当前层的最后一个节点存入结果if (i size - 1) {result.push_back(node-val);}// 左子节点入队if (node-left) {que.push(node-left);}// 右子节点入队if (node-right) {que.push(node-right);}}}return result; // 返回右视图结果} };637.二叉树的层平均值 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 示例 1 输入root [3,9,20,null,null,15,7] 输出[3.00000,14.50000,11.00000] 解释第 0 层的平均值为 3,第 1 层的平均值为 14.5,第 2 层的平均值为 11 。 因此返回 [3, 14.5, 11] 。 只需要增加计算每层平均数的功能即可 /*** 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:vectordouble averageOfLevels(TreeNode* root) {vectordouble result; // 用于存储最终的层序遍历结果if (root nullptr) return result; // 如果根节点为空返回空的结果double arg0;queueTreeNode* que; // 队列用于辅助层序遍历que.push(root); // 将根节点加入队列while (!que.empty()) {int size que.size(); // 当前层的节点数量vectorint vec; // 用于存储当前层的节点值for (int i 0; i size; i) {TreeNode* node que.front(); // 取出队首节点que.pop(); // 弹出队首节点argnode-val;// 将左子节点加入队列if (node-left) {que.push(node-left);}// 将右子节点加入队列if (node-right) {que.push(node-right);}}result.push_back(arg/size); // 将当前层的节点值存入结果中arg0;}return result; // 返回最终结果 } }; 429.N叉树的层序遍历(opens new window)515.在每个树行中找最大值(opens new window)116.填充每个节点的下一个右侧节点指针(opens new window)117.填充每个节点的下一个右侧节点指针II(opens new window)104.二叉树的最大深度(opens new window)111.二叉树的最小深度 还有几道题下次再写
http://www.dnsts.com.cn/news/246303.html

相关文章:

  • 用什么做网站方便友情链接英文翻译
  • 海淀网站建设价格微信公众号怎么做网页
  • 大连网站制作的网站开发专业术语大全
  • 石家庄网站平台网站设计用那个软件
  • 唐山做网站那家好网络营销企业培训
  • 网站可以做无形资产吗深圳营销型网站建设-龙华信科
  • 网站建站系统程序搜索引擎及门户网站介绍总结
  • 网上交易平台网站建设公司网站开发能怎么赚钱
  • 单页网站建设h5制作工具手机版
  • 上海网站制作公司shop++的发展历程
  • 陆良县住房和城乡建设局网站房产网签后能不能退房
  • 东莞网站建设优化东莞泰安企业网站seo
  • 爱途 中山网站制作张家港市凤凰镇建设局网站
  • 个人做地方门户网站wordpress发邮件收到不到邮件
  • 中国工程信息网站阿里云怎么购买域名
  • 重庆潼南网站建设公司电话湖南变电站公司中企动力技术支持网站建设
  • 如何做好公司网站建设海南网站建设小强
  • 望城门户网站制作视频软件哪个好
  • 百度品牌网站建设dede 中英文网站 怎么做
  • 网站正在建设中永久优秀网站设计参考
  • 建网站空间网站seo收录
  • 判断网站是什么系统做的微信小程序商城开发教程
  • 邮箱域名可以做网站吗做网站时搜索的代码是什么
  • 网站可以做参考文献吗wordpress 保持空格
  • 网站建设_app开发网页设计欣赏及点评
  • 优惠券网站制作教程公关公司经营范围
  • 深圳建设培训中心网站网站建设制作介绍河南
  • 深圳怎么注册公司网站网站标题上的小图标怎么做
  • 云南省做网站开发的公司排名网站如何做下载链接
  • 淮安做网站的有多少3d效果图软件