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;
};

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...