剑指Offer|LCR 045.找树左下角的值

LCR 045.找树左下角的值

给定一个二叉树的 根节点 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

法1:

分析:

定义两个队列queue1和queue2,默认将root加入queue1,令result默认为root.val。

如果queue1不为空,则遍历:

  • 将首元素出队列queue1,并将当前节点的左右孩子入队列(获取下层的节点);
  • 当queue1的长度为0 的时候,表明当前层次的节点都遍历结束,更新一下queue1为下一层次节点,queue2初始为空,判断queue1是否大于0 ,有节点的话需要更新一下result。
js 复制代码
 var findBottomLeftValue = function(root) {
    let queue1 = []; 
    let queue2 = []; 
    queue1.push(root);
    let result = root.val;

    while(queue1.length > 0){
        let node = queue1.shift(); // 移除第一个元素
        // 如果有左子节点,加入队列2
        if(node.left !== null){
            queue2.push(node.left);
        }

        if(node.right !== null){
            queue2.push(node.right);
        }

        // 如果当前队列为空,表示当前层已处理完毕
        if(queue1.length === 0){
            // 当前层处理完后,交换队列
            queue1 = queue2;
            queue2 = [];

            // 如果 queue1不为空,更新最左节点的值为当前队列的第一个节点
            if(queue1.length > 0){
                result = queue1[0].val;
            }
        }
    }
	return result;
};
相关推荐
a111776几秒前
Three.js 的前端 WebGL 页面合集(日本 开源项目)
前端·javascript·webgl
Kk.080215 分钟前
项目《基于Linux下的mybash命令解释器》(一)
前端·javascript·算法
SteveSenna35 分钟前
Trossen Arm MuJoCo自定义1:改变目标物体
人工智能·学习·算法·机器人
程序员鱼皮37 分钟前
又一个新项目开源,让 AI 帮你盯全网热点!
javascript·ai·程序员·编程·ai编程
MXN_小南学前端43 分钟前
前端开发中 try...catch 到底怎么用?使用场景和最佳实践
javascript·vue.js
星空椰1 小时前
JavaScript 基础进阶:分支、循环与数组实战总结
开发语言·javascript·ecmascript
yong99901 小时前
IHAOAVOA:天鹰优化算法与非洲秃鹫优化算法的混合算法(Matlab实现)
开发语言·算法·matlab
米粒12 小时前
力扣算法刷题 Day 42(股票问题总结)
算法·leetcode·职场和发展
张元清4 小时前
Pareto 动态路由实战:[slug]、catch-all、嵌套布局
前端·javascript·面试