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

上海建网站的公司公司网站搭建流程

上海建网站的公司,公司网站搭建流程,专业的佛山网站设计,如何制作网址内容层次遍历:又叫广度优先遍历。就是从根节点开始,先访问根节点下面一层全部元素,再访问之后的层次,直到访问完二叉树的最后一层。 我们先看一下基础的层次遍历题,力扣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.hrbkazy.com/news/23590.html

相关文章:

  • 网页翻译网站百度网盘搜索引擎入口
  • 网站做一样算不算侵权新手怎么学电商运营
  • 学包装设计网站软文是什么意思
  • 中国建筑教育网官网证书查询seo课程培训
  • 自豪地使用wordpress青岛seo网络推广
  • 网站日常维护做的来不外链推广
  • 外贸网站模版百度收录网址
  • 南宁著名的网站搭建一个网站需要什么
  • 静态网页设计用什么软件进一步优化落实
  • 药业做网站的网站目标分析中国楼市最新消息
  • 企业云app下载广州seo推广
  • 做NBA网站目的腾讯域名
  • ppt做视频的模板下载网站有哪些网站建设的推广渠道
  • 网站外链建设需要考核java培训机构十强
  • 锦阳商城网站搜索引擎网站优化推广
  • 鼓楼做网站seo查询排名系统
  • 微信网站特点软文是什么样子的
  • 信诺盛世网站专业的seo排名优化
  • 成都专业做游戏网站怎样策划一个营销型网站
  • 潍坊seo唐山seo排名
  • 岳阳企业网站建设广东新闻今日大件事
  • 建立网站第一步怎么做深圳最新通告今天
  • 做取名的网站很赚钱吗搜狗站长工具
  • 365建筑人才网win10必做的优化
  • 可以做软件的网站有哪些网络推广和网络销售的区别
  • 做网站建设需要什么工具网络营销课程ppt
  • 带后台的手机网站源码营销网
  • org域名做商业网站软文推广发布平台
  • 公司排名seo汕头seo全网营销
  • 网站前台修改手机百度网盘网页版登录入口