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

面试算法45:二叉树最低层最左边的值

题目

如何在一棵二叉树中找出它最低层最左边节点的值?假设二叉树中最少有一个节点。例如,在如图7.5所示的二叉树中最低层最左边一个节点的值是5。
在这里插入图片描述

分析

可以用一个变量bottomLeft来保存每一层最左边的节点的值。在遍历二叉树时,每当遇到新的一层时就将变量bottomLeft的值更新为该层第1个节点的值。当整棵二叉树都被遍历完之后,变量bottomLeft的值就是最后一次更新的值,也就是最后一层的第1个节点的值。

由于用广度优先的顺序遍历二叉树时需要区分不同的层,因此可以用两个队列分别存放不同层的节点,一个队列存放当前遍历层的节点,另一个队列存放下一层的节点。

public class Test {public static void main(String[] args) {TreeNode node8 = new TreeNode(8);TreeNode node6 = new TreeNode(6);TreeNode node10 = new TreeNode(10);TreeNode node5 = new TreeNode(5);TreeNode node7 = new TreeNode(7);TreeNode node9 = new TreeNode(9);TreeNode node11 = new TreeNode(11);node8.left = node6;node8.right = node10;node6.left = node5;node6.right = node7;node10.right = node9;node10.right = node11;int result = findBottomLeftValue(node8);System.out.println(result);}public static int findBottomLeftValue(TreeNode root) {Queue<TreeNode> queue1 = new LinkedList<>();Queue<TreeNode> queue2 = new LinkedList<>();queue1.offer(root);int bottomLeft = root.val;while (!queue1.isEmpty()) {TreeNode node = queue1.poll();if (node.left != null) {queue2.offer(node.left);}if (node.right != null) {queue2.offer(node.right);}if (queue1.isEmpty()) {queue1 = queue2;queue2 = new LinkedList<>();if (!queue1.isEmpty()) {bottomLeft = queue1.peek().val;}}}return bottomLeft;}
}
http://www.lryc.cn/news/213928.html

相关文章:

  • Could not find org.jetbrains.kotlin:kotlin-stdlib-jre7:1.5.21.
  • LoRaWan之LoRaMAC 的快速入门指南
  • 中国教育企业出海 新兴技术助力抢占先机
  • IntelliJ IDEA2023旗舰版和社区版下载安装教程(图解)
  • 【RxJava】map过程中各个Observable生命周期分析
  • vue 获取上一周和获取下一周的日期时间
  • 线性代数 第四章 线性方程组
  • @DateTimeFormat和@JsonFormat注解
  • 做抖音短视频会经历哪些阶段?
  • 【Mquant】2、量化平台的选择
  • iPhone手机如何恢复删除的视频?整理了3个好用方法!
  • 全网最全的RDMA拥塞控制入门基础教程
  • 分布式消息队列:RabbitMQ(1)
  • Redis集群脑裂
  • GEE教程——随机样本点添加经纬度信息
  • PyTorch入门学习(十):神经网络-非线性激活
  • 《golang设计模式》第三部分·行为型模式-03-解释器模式(Interpreter)
  • Windows个性化颜色睡眠后经常改变
  • calico ipam使用
  • Redis系统学习(高级篇)-Redis持久化-AOF方式
  • 云安全-云原生基于容器漏洞的逃逸自动化手法(CDK check)
  • 精选10款Python可视化工具,请查收
  • 大数据(21)-skew-GroupBy
  • window压缩包安装mongodb并注册系统服务
  • 【Java每日一题】——第四十五题:综合案例:模拟物流快递系统。(2023.11.1)
  • 二十二、Arcpy批量波段组合——结合Landat数据城市建成区提取
  • 电脑上数据恢复的详细操作
  • 3.1 linux控制内核打印printk demsg DEBUG
  • 关于爬虫API常见的技术问题和解答
  • 在CentOS上用yum方式安装MySQL8过程记录