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

江苏省住房和城乡建设厅网站外贸品牌推广公司

江苏省住房和城乡建设厅网站,外贸品牌推广公司,如何给网站建设提意见,精美软文句子102.二叉树的层序遍历(opens new window)107.二叉树的层次遍历II(opens new window)199.二叉树的右视图(opens new window)637.二叉树的层平均值(opens new window)429.N叉树的层序遍历(opens new window)515.在每个树行中找最大值(opens new window)116.填充每个节点的下一个右… 102.二叉树的层序遍历(opens new window)107.二叉树的层次遍历II(opens new window)199.二叉树的右视图(opens new window)637.二叉树的层平均值(opens new window)429.N叉树的层序遍历(opens new window)515.在每个树行中找最大值(opens new window)116.填充每个节点的下一个右侧节点指针(opens new window)117.填充每个节点的下一个右侧节点指针II(opens new window)104.二叉树的最大深度(opens new window)111.二叉树的最小深度 102思路 我们之前讲过了三篇关于二叉树的深度优先遍历的文章 二叉树前中后序递归法(opens new window)二叉树前中后序迭代法(opens new window)二叉树前中后序迭代方式统一写法(opens new window) 接下来我们再来介绍二叉树的另一种遍历方式层序遍历。 层序遍历一个二叉树。就是从左到右一层一层的去遍历二叉树。这种遍历的方式和我们之前讲过的都不太一样。 需要借用一个辅助数据结构即队列来实现队列先进先出符合一层一层遍历的逻辑而用栈先进后出适合模拟深度优先遍历也就是递归的逻辑。 而这种层序遍历方式就是图论中的广度优先遍历只不过我们应用在二叉树上。 使用队列实现二叉树广度优先遍历动画如下 这样就实现了层序从左到右遍历二叉树。 代码如下这份代码也可以作为二叉树层序遍历的模板打十个就靠它了。 c代码如下 class Solution { public:vectorvectorint levelOrder(TreeNode* root) {queueTreeNode* que;if (root ! NULL) que.push(root);vectorvectorint result;while (!que.empty()) {int size que.size();vectorint vec;// 这里一定要使用固定大小size不要使用que.size()因为que.size是不断变化的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--将102的结果reverse即可 C代码 class Solution { public:vectorvectorint levelOrderBottom(TreeNode* root) {queueTreeNode* que;if (root ! NULL) que.push(root);vectorvectorint result;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);}reverse(result.begin(), result.end()); // 在这里反转一下数组即可return result;} }; 199--二叉树的右视图 层序遍历的时候判断是否遍历到单层的最后面的元素如果是就放进result数组中随后返回result就可以了。 C代码 class Solution { public:vectorint rightSideView(TreeNode* root) {vectorintresult;queueTreeNode*que;if (root ! nullptr) { que.push(root); }while (!que.empty()){int size que.size();for (int i 0; i size; i){TreeNode* cur que.front();que.pop();if (i size - 1) { result.push_back(cur-val); }if (cur-left) { que.push(cur-left); }if (cur-right) { que.push(cur-right); }}}return result;} }; 637--二叉树的层平均值 本题就是层序遍历的时候把一层求个总和在取一个均值。 C代码: class Solution { public:vectordouble averageOfLevels(TreeNode* root) {queueTreeNode*que;vectordoubleresult;if (root ! nullptr) { que.push(root); }while (!que.empty()){ int size que.size();double sum 0;for (int i 0; i size; i){TreeNode* cur que.front();que.pop();sum cur-val;if (cur-left) { que.push(cur-left); }if (cur-right) { que.push(cur-right); }}sum / size;result.push_back(sum);}return result;} }; 429. N 叉树的层序遍历 这道题依旧是模板题只不过一个节点有多个孩子了 C代码: class Solution { public:vectorvectorint levelOrder(Node* root) {queueNode*que;vectorvectorintresult;if (root ! nullptr) { que.push(root); }while (!que.empty()){int size que.size();vectorinttmp;for (int i 0; i size; i){Node* cur que.front();tmp.push_back(cur-val);que.pop();int vsize cur-children.size();for(int j0;jvsize;j){if (cur-children[j]) {que.push(cur-children[j]);}}}result.push_back(tmp);}return result;} }; 515.在每个树行中找最大值 层序遍历取每一层的最大值 C代码 class Solution { public:vectorint largestValues(TreeNode* root) {queueTreeNode*que;vectorintresult;if (root ! nullptr) { que.push(root); }while (!que.empty()){int max que.front()-val;int size que.size(); for (int i 0; i size; i){TreeNode* cur que.front();if (max (cur-val)) { max cur-val; }que.pop();if (cur-left) { que.push(cur-left); }if (cur-right) { que.push(cur-right); }}result.push_back(max);}return result;} }; 116.填充每个节点的下一个右侧节点指针 思路 本题依然是层序遍历只不过在单层遍历的时候记录一下本层的头部节点然后在遍历的时候让前一个节点指向本节点就可以了 C代码 class Solution { public:Node* connect(Node* root) {queueNode*que;if (root ! nullptr) { que.push(root); }while (!que.empty()){int size que.size();Node* pre;Node* cur;for (int i 0; i size; i){if (i 0) {pre que.front();que.pop();cur pre;}else{cur que.front();que.pop();pre-next cur;pre pre-next;}if (cur-left) { que.push(cur-left); }if (cur-right) { que.push(cur-right); }}pre-next nullptr;}return root;} }; 117.填充每个节点的下一个右侧节点指针II 思路 这道题目说是二叉树但116题目说是完整二叉树其实没有任何差别一样的代码一样的逻辑一样的味道 C代码 class Solution { public:Node* connect(Node* root) {queueNode*que;if (root ! nullptr) { que.push(root); }while (!que.empty()){int size que.size();Node* pre;Node* cur;for (int i 0; i size; i){if (i 0) {pre que.front();que.pop();cur pre;}else{cur que.front();que.pop();pre-next cur;pre pre-next;}if (cur-left) { que.push(cur-left); }if (cur-right) { que.push(cur-right); }}pre-next nullptr;}return root;} }; 104.二叉树的最大深度 思路 使用迭代法的话使用层序遍历是最为合适的因为最大的深度就是二叉树的层数和层序遍历的方式极其吻合。 在二叉树中一层一层的来遍历二叉树记录一下遍历的层数就是二叉树的深度如图所示 所以这道题的迭代法就是一道模板题可以使用二叉树层序遍历的模板来解决的。 C代码如下: class Solution { public:int maxDepth(TreeNode* root) {queueTreeNode*que;int depth 0;if (root ! nullptr) {que.push(root);}while (!que.empty()){int size que.size();for (int i 0; i size; i){TreeNode* cur que.front();que.pop();if (cur-left) { que.push(cur-left); }if (cur-right) { que.push(cur-right); }}depth;}return depth;} }; 111.二叉树的最小深度 思路 相对于 104.二叉树的最大深度 本题还也可以使用层序遍历的方式来解决思路是一样的。 需要注意的是只有当左右孩子都为空的时候才说明遍历的最低点了。如果其中一个孩子为空则不是最低点 代码如下详细注释 class Solution { public:int minDepth(TreeNode* root) {queueTreeNode*que;int depth 0;if (root ! nullptr){que.push(root);}else {return depth;} while (!que.empty()){int size que.size();depth;for (int i 0; i size; i){TreeNode* cur que.front();que.pop();if (cur-left) { que.push(cur-left); }if (cur-right) { que.push(cur-right); }if (cur-left nullptr cur-right nullptr){return depth;}} }return depth;} };
http://www.hkea.cn/news/14396877/

相关文章:

  • 做简易动画的网站办网站 哪些许可
  • 网站群信息管理系统北京网站设计师培训
  • 如何管理wordpress网站模板下载北京交易网站建设
  • wordpress实例网站网站的后续优化方案
  • 一站式网站建设服务网站怎么做登录模块
  • 90设计网站会员全站通与电商模板的区别网站建设需求分析调研表
  • 陕西哪些公司做企业网站六安seo曝光行者seo
  • 下班后赚钱的100个副业seo实战培训
  • 沈阳网站优化排名建行网银盾插上以后网页无法打开
  • 网站用什么软件编写怎么建网站挣钱
  • 修改公司网站专业设计笔记本电脑
  • 网站建设是广告吗搜索大全引擎入口
  • 如何建一个免费试用网站qq登录网页手机版
  • 简述酒店类网站开发的策略网站建立公司
  • 网站开发常用软件是什么一个备案号多个网站
  • 手机能建设网站忙清河做网站哪儿好
  • 搜索引擎营销的主要方法官网seo
  • 龙岗网站建设价格wordpress主题 xueui
  • 中国建设银行网站属于什么机构wordpress ie8 兼容
  • 网站定制业务做网站怎么做的
  • 东莞品托网站建设王野苏婉卿
  • 企业建站源码系统南宁网站优化公司电话
  • 内蒙古省呼和浩特网站建设深圳网站排名
  • 尤溪县建设局网站专做定制的网站
  • 江西营销网站建设小程序公众号开发方案
  • 做百度还是阿里网站好建设施工合同范本
  • 正规网站建设服务中心罗定市城乡建设局网站
  • 果洛营销网站建设多少钱坑人的网站链接怎么做
  • 社交(sns)网站的完整设计思路名字logo设计免费
  • 手机网页制作与网站建设wordpress 评论插件