513.找树左下角的值
创始人
2024-03-17 09:23:25
0

文章目录

  • 513.找树左下角的值
    • 题目
    • 题解 - BFS
    • 题解- DFS

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

题解 - BFS

题目描述中 [最底层 最左边] ,首先想到的就是层序遍历。因为层序遍历刚好是一层一层遍历的,其他遍历方式是按分支遍历的。

怎么确定是 [最底层 最左边] 的节点呢?
之前层次遍历的特点是 本层入队,本层的元素依次出队的同时下一层元素开始进队。每一层是从左到右依次入队了,所以最后一个入队和出队的一定是[最底层 最右边] 的元素。
所以如果每一层的入队顺序是从右往左依次入队,那么最后一个入队和出队的元素一定是 [最底层 最左边] 的节点。所以我们可以用一个元素来记录入队的节点,那么该元素的最终值就是 [最底层 最左边] 的节点值


var findBottomLeftValue = function(root) {//套入层序遍历模板,每层元素从右往左入队,记录每次的入队元素const queue = new Array();queue.push(root);let res = root.val;while(queue.length){let node = queue.shift();res = node.val;if(node.right)queue.push(node.right);if(node.left)queue.push(node.left);}return res;
};

题解- DFS

前序遍历,记录下当前的层数如果比之前的最大层数大并且为叶子节点的话存到结果中。说明是新一层的做左边的叶子节点。

var findBottomLeftValue = function(root) {let max=0, res;function dfs( root,  deep) {if (root == null) return ;if (deep > max) { max = deep;res = root.val;//记录的是每一层的最左边的节点}dfs(root.left, deep + 1);dfs(root.right, deep + 1);}dfs(root, 1);return res;
};

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...