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

513.找树左下角的值(二叉树算法题)

513.找树左下角的值

力扣题目链接

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

假设二叉树中至少有一个节点。

示例 1:

输入: root = [2,1,3]
输出: 1

示例 2:

输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7

提示:

  • 二叉树的节点个数的范围是 [1,104]
  • -231 <= Node.val <= 231 - 1 

迭代法

本题使用层序遍历再合适不过了,比递归要好理解得多!

只需要记录最后一行第一个节点的数值就可以了。

如果对层序遍历不了解,看这篇二叉树:层序遍历登场! (opens new window),这篇里也给出了层序遍历的模板,稍作修改就一过刷了这道题了。

代码如下:

// 定义一个名为 Solution 的类,用于解决“寻找二叉树最底层最左侧的值”问题
class Solution {/*** 方法:findBottomLeftValue* 功能:返回给定二叉树中最底层(最后一层)中最左侧节点的值。* 算法思路:使用层序遍历(广度优先搜索,BFS),逐层处理节点。*         每一层的第一个节点就是该层最左边的节点。*         遍历到最后,res 保存的就是最后一层最左边的节点值。** @param root 二叉树的根节点* @return 最底层最左侧节点的值*/public int findBottomLeftValue(TreeNode root) {// 创建一个双端队列(Deque),用于实现层序遍历(BFS)// 使用 LinkedList 作为底层实现,支持高效地在队尾入队、队头出队Deque<TreeNode> deque = new LinkedList<>();// 将根节点入队,作为 BFS 的起点deque.offer(root);// 用于存储每一层最左边节点的值// 最终结果就是最后一层的最左节点值int res = 0;// 当队列不为空时,继续遍历// 每一次 while 循环处理二叉树的一层while (!deque.isEmpty()) {// 获取当前层的节点数量// 这个数量决定了 for 循环的次数,确保只处理当前层的所有节点int len = deque.size();// 遍历当前层的所有节点for (int i = 0; i < len; i++) {// 从队列头部取出一个节点(先进先出,保证层序)TreeNode node = deque.poll();// 判断是否是当前层的第一个节点(即最左侧节点)// 是的话,就更新结果 resif (i == 0) {res = node.val;}// 如果当前节点有左子节点,将其加入队列// 注意:先加入左子节点,再加入右子节点,保证从左到右的顺序if (node.left != null) {deque.offer(node.left);}// 如果当前节点有右子节点,也加入队列if (node.right != null) {deque.offer(node.right);}}// 当前层处理完毕,res 已更新为该层最左侧节点的值}// while 循环结束,说明已经遍历到最后一层// 此时 res 存储的就是最后一层最左侧节点的值return res;}
}

http://www.dtcms.com/a/434470.html

相关文章:

  • LeetCode:84.完全平方数
  • 《API网关性能优化指南:从请求拥堵到毫秒级响应,并发下的架构重构实践》
  • 免费p2p网站建设企业管理系统开发平台
  • 报告派研读:2025年电力设备及新能源行业深度报告
  • 站长之家源码垂直电商平台有哪些?
  • K8s中的ETCD存储机制
  • 【精品资料鉴赏】397页WORD详解智慧城市顶层设计方案
  • 16种粮食谷物分类数据集5300张17类别
  • 2025基于springboot的网上蛋糕销售系统
  • SSE是什么?SSE解决什么问题?在什么场景使用SSE?
  • 算法偏见的解药:将敏捷“灵魂”注入AI伦理
  • 基于前端+Node.js 的 Markdown 笔记 PDF 导出系统完整实战
  • lesson71:Node.js与npm基础全攻略:2025年最新特性与实战指南
  • 购买域名后 可以做网站么灰色关键词排名优化
  • 专业做家具的网站小程序注册方法
  • OWASP ZAP 工具安全测试介绍
  • Git介绍 常用命令
  • 教育机构作图:含拼团 / 课程封面模板,适配小程序
  • linux内核时间定时器延时
  • 远程安装vps相关软件记录
  • 山东高端网站建设方案宁波网站建设那家好
  • x86_64 centos7.2 上用aarch64-linux-gnu-gcc4.8.5交叉编译qt5.11.3
  • GLib线程池全面解析:原理、应用与性能优化
  • 东莞网站设计网址电影网站建设方案ppt模板下载
  • 51单片机-驱动LCD1602液晶显示屏教程
  • 【C++哲学】面向对象的三大特性之 多态
  • Python - 100天从新手到大师:第二十六天Python操作Word和PowerPoint文件
  • 算法基础 典型题 前缀和
  • 广告网站制作多少钱wordpress修改密码后还是登陆不了
  • 【MySQL】一篇讲透MySQL的MVCC机制!