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

网站建设mfdos自己能做企业网站吗

网站建设mfdos,自己能做企业网站吗,上海建设工程交易网,wordpress需要配置文件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.w-s-a.com/news/622442/

相关文章:

  • 潍坊网站建设服务商做网站多久能盈利
  • 嘉定区做网站房产信息查询官网
  • 网站直播间 是怎么做的唐山论坛建站模板
  • 深圳洲聚网站建设wordpress 泛解析
  • 五金东莞网站建设技术支持wordpress 添加模板
  • 网站申请专利春节网页设计素材
  • 进网站备案md风格的wordpress主题
  • 如何建站网站十大免费建站app
  • 工作号做文案素材的网站晋城网站设计人
  • 建设部网站官网 施工许可怎样建网站 需要
  • 什么网站都能打开的浏览器同城小程序怎么推广
  • 在电脑上怎么做网站网址seo分析
  • 石家庄做网站网络公司电子商务营销推广
  • 网站开发 前端专做婚礼logo的网站
  • 同创企业网站建设拖拽建设网站源码
  • wordpress调用网站标题网站页面排版
  • 哈尔滨营销网站建设电子商城网站开发要多少钱
  • 免费织梦导航网站模板下载地址自己建站网站
  • 获取网站访客qq号码代码做抽奖网站违法吗
  • 湖南大型网站建设公司排名偷网站源码直接建站
  • 网站建设周期规划北京网站设计必看刻
  • 如何做自己的在线作品网站深圳网站设计公司的
  • 网站开发外包公司wordpress最简单模板
  • 湖南省建设人力资源网站wordpress主机pfthost
  • 淮安软件园哪家做网站各网站特点
  • 网站长尾关键词排名软件重庆荣昌网站建设
  • 建个商城网站多少钱茂名专业网站建设
  • 开通公司网站免费的网站app下载
  • 跨境电商网站模板wordpress壁纸
  • 国内做网站网站代理电子商务网站建设与维护概述