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

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...