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

上海建网站的公司武汉seo优化代理

上海建网站的公司,武汉seo优化代理,app应用网站单页模板下载,建网站需要多少费用层次遍历:又叫广度优先遍历。就是从根节点开始,先访问根节点下面一层全部元素,再访问之后的层次,直到访问完二叉树的最后一层。 我们先看一下基础的层次遍历题,力扣102题:给你一个二叉树,请你返…

层次遍历:又叫广度优先遍历。就是从根节点开始,先访问根节点下面一层全部元素,再访问之后的层次,直到访问完二叉树的最后一层。

我们先看一下基础的层次遍历题,力扣102题:给你一个二叉树,请你返回其按层序遍历得到的节点值。(即逐层地,从左到右访问所有节点)。

分析:先将根节点root放到队列queue中,接着遍历队列。遍历当前层次的节点时,如果这个节点还有子节点,就将其加入队列中;如果当前层次遍历完了,就将队列的长度重新指向新的队列长度sizeOfQueue,这时队列长度就是下一层的节点个数。

在这里插入图片描述

  function TreeNode(val, left, right) {this.val = (val === undefined ? 0 : val)this.left = (left === undefined ? null : left)this.right = (right === undefined ? null : right)}/*** 层次遍历,自顶向下  *@param: {TreeNode} root;*@return {number[][]}* * */function levelOrder(root) {if (!root) {return [];}let result = [];let queue = [];queue.push(root);while (queue.length > 0) {let size = queue.length;const tempList = [];for (let i = 0; i < size; i++) {let t = queue.shift();tempList.push(t.val);if (t.left !== null) {queue.push(t.left);}if (t.right !== null) {queue.push(t.right);}}result.push(tempList);}return result;}

在上一题的基础上,我们看一下力扣515题,给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。

分析:这其实就是先进行层次遍历,之后找出每一层的最大值即可。我们用一个变量maxValue来记录当前得到的最大值。和本层的每一个节点的值进行比较。

/*** @param {TreeNode} root* @return {number[]}* */
function largestValues(root) {if (!root) {return [];}const largestValues = []; // 存放每一层的最大值let queue = [root];while (queue.length > 0) {let sizeOfQueue = queue.length;let largestValue = -Number.MAX_VALUE;while (sizeOfQueue > 0) {sizeOfQueue--;const treeNode = queue.shift();largestValue = Math.max(largestValue, treeNode.val)	// 比较大小if (treeNode.left !== null) {queue.push(treeNode.left);}if (treeNode.right !== null) {queue.push(treeNode.right);}}largestValues.push(largestValue); // 把每一层最大值加入存放最大值的数组}return largestValues;
}

我们再来看一下力扣199题,给给定一个二叉树的根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

**分析:**这道题也是层次遍历的变种题,我们思考一下,既然需要我们找到每一层最右边节点的值,那在我们遍历每一层节点的时候,我们已经将这层节点放入队列,是不是只需要判定一下for循环的索引值是否等于队列长度 - 1即可,这样我们找到了最右边的节点,同样的如果for循环的索引值= 0 ,那么找到的就是这层最左边的节点。

function rightSideView(root) {const result = [];let queue = [root];if (!root) {return [];}while (queue.length > 0) {const sizeOfQueue = queue.length;for (let indexOfQueue = 0; indexOfQueue < sizeOfQueue; indexOfQueue++) {const treeNode = queue.shift();if (treeNode.left) {queue.push(treeNode.left);}if (treeNode.right) {queue.push(treeNode.right);}// 如果是队列的最后一个节点就是每一层最右边的节点if (indexOfQueue === sizeOfQueue - 1) {result.push(treeNode.val);}}}return result;
}

总结

掌握了层序遍历的方法,就可以对很多二叉树的变种题做出应对。

http://www.mmbaike.com/news/42824.html

相关文章:

  • 河南微网站建设公司百度下载安装2022最新版
  • ppt做的比较好的网站广东云浮疫情最新情况
  • wordpress建站阿里云疫情最新政策最新消息
  • 中小型网站建设教程百度账号人工客服
  • 电影网站建设视频教程网络推广是以企业产品或服务
  • 南京网站搭建关键词网站排名软件
  • 南通江苏网站建设网站媒体推广方案
  • 站酷设计网站官网入91
  • wordpress post grid济南seo快速霸屏
  • 网络服务器施工方案夫唯seo教程
  • 做网站云服务器选择多大带宽长春网站优化页面
  • 上海网站设计印刷拆除百度帐号申请注册
  • 网站点击后的loading是怎么做的网站推广的6个方法是什么
  • 滨海县建设局网站舆情网站直接打开的软件
  • 网站限制访问流量免费网上申请注册
  • 客户管理系统服务关键词优化seo优化排名
  • 广西做网站建设的公司seo优化厂商
  • 响应式购物网站设计2024年重大新闻简短
  • 宝塔做两个网站吉林seo技术交流
  • scratch少儿编程百度seo引流
  • 网站域名申请之后如何做网站网站建设合同
  • 国外网站流量徐州seo招聘
  • 电商 网站 建设提升seo排名的方法
  • 华强北做网站seo页面代码优化
  • 网站建设 电子商务 品牌首选IDC深圳网络运营推广公司
  • 网站建设需要的专业知识品牌推广方案怎么写
  • 怎样申请做p2p融资网站抖音怎么推广引流
  • 兰州网站建设公司热搜榜百度
  • 淮南新闻网深圳seo优化
  • 贾汪区住房和城乡建设局网站沧浪seo网站优化软件