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

3g网站制作武汉搜索引擎排名优化

3g网站制作,武汉搜索引擎排名优化,阿里巴巴运营免费教程,微网站建设合同层次遍历:又叫广度优先遍历。就是从根节点开始,先访问根节点下面一层全部元素,再访问之后的层次,直到访问完二叉树的最后一层。 我们先看一下基础的层次遍历题,力扣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.qdjiajiao.com/news/12838.html

相关文章:

  • 网页翻译网站可以推广赚钱的软件
  • 什么网站可以做医疗设备的怎样打百度人工客服热线
  • 福州专业做网站的公司58网络推广
  • 做银行应该关注的网站网络优化初学者难吗
  • 网络广告是较为常见的一种网络营销方式seo外链优化方法
  • 重庆网站icp备案查询百度爱采购平台登录
  • 服务器做jsp网站教程视频播放如何加入百度推广
  • 百度收录新网站网站模板定制
  • 网站自己做服务器正规seo关键词排名网络公司
  • 成都淮州新城建设投资有限公司网站谷歌seo运营
  • 网站开发公司杭州网站建设营销宣传方式有哪些
  • 网站的banner做多大郑州网站制作工具
  • 商城网站制作方案seo标题优化裤子关键词
  • 那里做直播网站长春百度网站快速排名
  • 从化网站制作广州头条新闻最新
  • 网站建设运营的成本网络推广公司经营范围
  • 商务网站开发优化大师优化项目有
  • 政府网站建设步骤2022年大事热点新闻
  • 做伦理电影网站邯郸网站seo
  • 网站域名申请怎么做广州广告公司
  • 石家庄小学网站建设指数分布
  • 智慧建设网站今日最新新闻重大事件
  • 有了网站源码 怎么建设网站谷歌paypal官网登录入口
  • 买域名做网站推广都是些什么查网站流量查询工具
  • 佛山做网站格网络营销推广方式包括哪几种
  • wordpress 微信咨询代码seo排名优化推荐
  • 如何建立b2b网站淘宝关键词搜索量查询工具
  • 竞拍网站做烂了合肥网站
  • 响应式环保网站上海seo培训
  • 论坛网站建设流程厦门人才网唯一官方网站