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

开江建设局网站seo 哪些媒体网站可以发新闻

开江建设局网站,seo 哪些媒体网站可以发新闻,哈尔滨新闻头条最新消息,ip域名查询网题目 输入一棵二叉树,请找出二叉树中每层的最大值。例如,输入图7.4中的二叉树,返回各层节点的最大值[3,4,9]。 分析:用一个队列实现二叉树的广度优先搜索 由于要找出二叉树中每层的最大值,因…

题目

输入一棵二叉树,请找出二叉树中每层的最大值。例如,输入图7.4中的二叉树,返回各层节点的最大值[3,4,9]。
在这里插入图片描述

分析:用一个队列实现二叉树的广度优先搜索

由于要找出二叉树中每层的最大值,因此在遍历时需要知道每层什么时候开始、什么时候结束。如果还是和前面一样只用一个队列来保存尚未遍历到的节点,那么有可能位于不同的两层的节点同时在队列之中。例如,遍历到节点4时,就把节点4从队列中取出来,此时节点2已经在队列中。接下来要把节点4的两个子节点(节点5和节点1)都添加到队列中。这个时候第2层的节点2和第3层的节点5、节点1都在队列中。

如果不同层的节点同时位于队列之中,那么每次从队列之中取出节点来遍历时就需要知道这个节点位于哪一层。解决这个问题的一个办法是计数。需要注意的是,当遍历某一层的节点时,会将下一层的节点也放入队列中。因此,可以用两个变量分别记录两层节点的数目,变量current记录当前遍历这一层中位于队列之中节点的数目,变量next记录下一层中位于队列之中节点的数目。

解:用一个队列实现二叉树的广度优先搜索

public class Test {public static void main(String[] args) {TreeNode node3 = new TreeNode(3);TreeNode node4 = new TreeNode(4);TreeNode node2 = new TreeNode(2);TreeNode node5 = new TreeNode(5);TreeNode node1 = new TreeNode(1);TreeNode node9 = new TreeNode(9);node3.left = node4;node3.right = node2;node4.left = node5;node4.right = node1;node2.right = node9;List<Integer> result = largestValues(node3);System.out.println(result);}public static List<Integer> largestValues(TreeNode root) {int current = 0;int next = 0;Queue<TreeNode> queue = new LinkedList<>();if (root != null) {queue.offer(root);current = 1;}List<Integer> result = new LinkedList<>();int max = Integer.MIN_VALUE;while (!queue.isEmpty()) {TreeNode node = queue.poll();current--;max = Math.max(max, node.val);if (node.left != null) {queue.offer(node.left);next++;}if (node.right != null) {queue.offer(node.right);next++;}if (current == 0) {result.add(max);max = Integer.MIN_VALUE;current = next;next = 0;}}return result;}
}

分析:用两个队列实现二叉树的广度优先搜索

当遍历某一层时,会将位于下一层的子节点也插入队列中,也就是说,队列中会有位于两层的节点。可以用两个不同的队列queue1和queue2分别存放两层的节点,队列queue1中只放当前遍历层的节点,而队列queue2中只放下一层的节点。

当队列queue1被清空时,当前层的所有节点都已经被遍历完。通过比较这一层所有节点的值,就能找出这一层所有节点的最大值。在开始遍历下一层之前,把队列queue1指向队列queue2,并将队列queue2重新初始化为空的队列。重复这个过程,直到所有节点都遍历完为止。

解:用两个队列实现二叉树的广度优先搜索

public class Test {public static void main(String[] args) {TreeNode node3 = new TreeNode(3);TreeNode node4 = new TreeNode(4);TreeNode node2 = new TreeNode(2);TreeNode node5 = new TreeNode(5);TreeNode node1 = new TreeNode(1);TreeNode node9 = new TreeNode(9);node3.left = node4;node3.right = node2;node4.left = node5;node4.right = node1;node2.right = node9;List<Integer> result = largestValues(node3);System.out.println(result);}public static List<Integer> largestValues(TreeNode root) {Queue<TreeNode> queue1 = new LinkedList<>();Queue<TreeNode> queue2 = new LinkedList<>();if (root != null) {queue1.offer(root);}List<Integer> result = new LinkedList<>();int max = Integer.MIN_VALUE;while (!queue1.isEmpty()) {TreeNode node = queue1.poll();max = Math.max(max, node.val);if (node.left != null) {queue2.offer(node.left);}if (node.right != null) {queue2.offer(node.right);}if (queue1.isEmpty()) {result.add(max);max = Integer.MIN_VALUE;queue1 = queue2;queue2 = new LinkedList<>();}}return result;}
}
http://www.yayakq.cn/news/564093/

相关文章:

  • 怎么做souq网站佛山微网站推广
  • html怎么做网站设计建设工程合同无效
  • 兰州市建设工程安全质量监督站网站网络安全运维工程师
  • 网站定制开发一般多久做汽车租赁主要的网站
  • 四川省建设工程质量与安全监督网站可以看网站的浏览器有哪些
  • 网站新年特效夜间正能量不良网站
  • 网站建设需具备的条件私人服务器翻译
  • 深圳网站开杭州推广公司
  • php源码网站建设教程精品网站建设需要多少钱
  • 建设心理网站腾讯云可以做网站吗
  • 杭州正晖建设工程有限公司网站做视频网站 版权怎么解决
  • 遵义市住房和城乡建设局官方网站昆明企业网站建设
  • 建app网站要多少钱百度打击未备案网站
  • 西安百度推广多少钱wordpress怎么做优化
  • 门户网站建设投标书自己有服务器怎么搭建网站
  • 西安西部数码备案网站织梦 网站首页
  • 做家教在哪个网站找wordpress付费小说
  • 营销网站建设平台合肥最新通告
  • 河北高端网站制作微网站备案
  • 办公家具网站建设公司濮阳建设工程交易网中标公示
  • 学做美食交流网站专注昆明网站推广
  • 网站备案咨询零基础自己建网站
  • 网站开发宣传图wordpress 建立数据库连接时出错 用户名密码可能不正确
  • 网站根目录在哪儿成都新冠病最新消息
  • 哈尔滨模板建站新报价游戏客户端开发
  • 做全景的h5网站短网址生成在线
  • 网站开发数据库速度解决方法无锡网络推广哪家好
  • 建设一个类似于京东的网站深圳市宝安区核酸检测点
  • 织梦电影网站模板下载网站响应时间多久
  • 住房和城乡建设部监理工程师网站衡水建设企业网站