java数据结构与算法刷题-----LeetCode513. 找树左下角的值

LeetCode5 Longest Palindromic Substring Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Java AC 版本 立即下载
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

1. 深度优先

解题思路
  1. 先深度优先遍历左结点,获得可到达的最左结点高度A
  2. 然后递归向上继续深度优先
  3. 如果递归向上过程,没有发现比A高的高度,那么最开始的那个左节点就是我们要找的
  4. 但如果我们发现比A高的,那么我们优先进入更高层。而因为我们先深度遍历左节点。所以就算进入更高层,依然是获得当前结点的可到达的最左结点B,然后更新高度为B。继续递归向上。
  5. 直到遍历完成,注意只有高度更高时,才更新
代码

在这里插入图片描述

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    int curVal = 0;//遍历过程中,当前最左结点
    int curHeight = 0;//遍历过程中,当前最左结点的层次
    public int findBottomLeftValue(TreeNode root) {
        dfs(root,0);//第0层开始遍历
        return curVal;
    }
    public void dfs(TreeNode root,int height) {
        if(root == null) return;//如果当前结点为空,直接返回
        //不为空就进行深度优先遍历.有下一层就去下一层
        height++;
        //先找左
        dfs(root.left,height);//遍历左子树,层级+1
        //如果右边的层级更高,优先高层级
        dfs(root.right,height);//遍历右子树,层级+1
        if(height > curHeight){//如果当前层的深度比记录的深
            curHeight = height;//更新
            curVal = root.val;//更新
        }
    }
}

2. 广度优先

解题思路:所有结点遍历一遍的情况下,广度优先比深度优先慢一倍.因为入队列出队列,每个结点访问两次
  1. 广度优先,就相当于层级遍历,正好适合这道题
  2. 每一层我们从右到左遍历,当遍历到最后一个结点时,正好是最后一层的最左边结点
  3. 所以我们要先入队列右节点,然后在入队列左节点,和一般情况下,从左到右层级遍历是反过来的。这点要注意
代码

在这里插入图片描述

class Solution {
    public int findBottomLeftValue(TreeNode root) {
        int ret = 0;//保存结果
        Queue<TreeNode> queue = new ArrayDeque<TreeNode>();//广度优先队列
        queue.offer(root);//先入队列根节点
        while (!queue.isEmpty()) {//如果还有的遍历的话就继续
            TreeNode p = queue.poll();//出队列结点
            //注意我们要每一层最左结点。则右边的结点应该先遍历,然后遍历左边
            //这样最后才能知道,留下的是左边的结点
            if (p.right != null) {//如果有右子树,先右,否则会先把左,出队列,我们就无法获取当前层左下角的值了
                queue.offer(p.right);
            }
            if (p.left != null) {//左节点后出,才能在当前层遍历完成后,得到是左边的结点
                queue.offer(p.left);
            }
            ret = p.val;//保存值,因为左节点是后入队列的,所以最后会保存到最左的结点
        }
        return ret;
    }
}
RFSoC应用XCZU47DR八发八收FPGA设计方案 本文介绍了基于Xilinx XCZU47DR RFSoC芯片的八发八收FPGA设计方案。该方案采用集成射频数据转换器的SoC架构,支持8路14bit ADC(5GSPS)和8路14bit DAC(9.85GSPS),可直接处理5GHz以下射频信号。硬件设计包含高性能输入缓冲器、QMC校正和复杂混频器,适用于5G/6G通信、雷达、卫星通信等领域。文章详细阐述了ADC/DAC子系统参数,包括通道配置、采样率、带宽等特性,并提供了FPGA顶层模块的硬件接口设计,展示了多通道数据收发处理能力。该方案无需外置混频器, 阅读详情

相关推荐

Xilinx Vitis arm-xilinx-eabi-gcc.exe: error: *.c: Invalid argument

This problem may be a bugof version 2021.1 only. Unfortunately, I'm just currently using this version. After Build Project: Find where this Makefile is through "make: Leaving directory" information. For me, it is located atZynq_CPU_wrapper_hw_platfo...

Ayka的博客 6662

LeetCode第5题-最长回文子串-java实现-图解思路与手撕代码-动态规划

LeetCode第5题-最长回文子串-java实现-图解思路与手撕代码-动态规划

weixin_45271005的博客 758

SAP固定资产原值与净值取值逻辑全解析:从数据表到ABAP实战

在企业资源计划(ERP)系统中,固定资产的价值管理是财务会计的核心模块,其关键在于准确核算资产原值与净值。从技术原理上看,这涉及对资产全生命周期业务(如购置、折旧、转移、报废)的财务建模,以及底层数据表(如ANLC、ANEP)的精准关联与计算。掌握这一逻辑的技术价值在于,能够确保财务报表数据的准确性,满足合规性要求,并为管理决策提供可靠依据。在SAP ECC或S/4HANA系统的应用场景中,ABAP开发者与财务顾问常需通过编写报表程序,从复杂的数据结构中提取资产价值信息。本文聚焦于SAP资产会计模块,深入剖

weixin_30984001的博客 396

leetcode(java) 5. Longest Palindromic Substring

【代码】leetcode(java) 5. Longest Palindromic Substring。

jmqxnxg的博客 719

避坑指南:解决‘Logical volume contains a filesystem in use’错误,顺利完成LVM根目录扩容

本文详细解析了Linux系统中LVM根目录扩容时遇到的‘Logical volume contains a filesystem in use’错误,提供了从错误诊断到实战解决方案的完整指南。通过动态扩容技术、单用户模式操作和LVM快照等方案,帮助管理员顺利完成根目录扩容,避免数据丢失和系统崩溃。

weixin_28702105的博客 228

arcgis根据矢量范围统计栅格数据众数、最大值、均值、中位数、最小值、少数等

像元统计数据 根据多个栅格数据计算每个像元的统计数据。 可用的统计数据有:众数、最大值、均值、中位数、最小值、少数、范围、标准差、总和及变异度。 https://desktop.arcgis.com/zh-cn/arcmap/10.3/tools/spatial-analyst-toolbox/an-overview-of-the-local-tools.htm ...

GIS哼哈哈的博客 6万+

LeetCode第五题:最长回文子串(Java)

题目:最长回文子串 示例: 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 这道题用到许多编程思想,中心扩展、动态规划、著名的manacher(马拉车),是前面题所没用用过的方法。 方法一:暴力循环 找到所有子串,判定是否是回文串,保存最长长度的回文串。 public static String longestPalindrome(String s) { //存储最长子串 String str = "";

巨坑的菜比的博客 1万+

国产机载操作系统天脉ACoreOS实战:从零搭建开发环境到应用移植

本文详细介绍了国产机载操作系统天脉ACoreOS的实战开发流程,从核心特性解析到开发环境搭建,再到VxWorks应用移植策略。重点阐述了其符合ARINC 653标准的时空分区架构如何保障高可靠性,并提供了从零创建分区工程、重构通信与任务代码的具体步骤,为开发者向这一国产化平台迁移提供了实用指南。

flower的专栏 634

【经典算法】LeetCode 5: 最长回文子串(Java/C/Python3实现含注释说明,Medium)

通过动态规划计算回文子串算法稳定可靠需要额外的二维数组存储状态O(n^2)O(n^2),中心扩展法通过扩展中心位置计算回文子串具有较高效率对空间的使用较低O(n^2)O(1)

3066

用MSBlock重塑C2f,让你的模型又轻又强(参数量与精度的双重突破)

打开确保模型解析器能识别MSBlock模块。通过将MSBlock集成到YOLOv8的C2f模块中,我们实现了一个“轻量且多尺度感知”的目标检测模型。这个改进不仅在工程上能降低部署成本、提升推理速度,更在科研上提供了“多尺度+动态核”的创新思路——这种思路可以延伸到其他网络(如ResNet、MobileNet)的改进中,帮你在论文中打造独特的研究点。如果你在实现过程中遇到问题,比如代码报错、训练收敛异常,可以先检查模块集成的每一步是否到位,再尝试调整MSBlock的卷积核尺寸、动态权重的计算方式等超参数。

m0_71589036的博客 106

Python爬虫教程:抓取纽约时报文章存档

爬虫技术主要用于从网站上抓取并提取数据。HTTP请求:使用requests库发送HTTP请求以获取网页。网页解析:使用或lxml库解析HTML网页。数据存储:将抓取的数据保存为CSV、JSON等格式,或者存储在数据库中。防反爬虫技术:模拟正常的用户请求,避免被反爬虫机制封锁。多线程与异步爬取:提高抓取效率。通过这篇博客,您已经学习了如何使用Python爬取纽约时报的历史文章存档。本文介绍了如何模拟请求头、抓取网页内容、解析HTML并提取数据,最后存储到CSV文件或数据库中。

2201_76125261的博客 594

leetcode5. 最长回文子串

s.charAt(i)每次都会检查数组下标是否越界,所以最好先转化成字符数组 char[]arr=s.toCharArray 方法1:暴力解法: 就是暴力枚举,每截取到一个字符串就利用回文串判断函数(自己写的)来判断是不是回文串,并记录长度,输出最长的一个就好了 s.subString用起来呀 暴力解法在两个for循环中还做了遍历,因此,时间复杂度是O(n3) 方法2:枚举所有子串的可能的中心位置 中心扩散法:从中间位置开始,向两边扩散,直到不能匹配 需要分奇数长度和偶数长度,因为中心位置可能是一个字符

想握住此生辽阔 3688

《AgentScope-Java 深入浅出教程》第10章 RAG 知识检索

RAG(Retrieval-Augmented Generation,检索增强生成)是一种将信息检索与文本生成相结合的技术架构。它通过从外部知识库中检索相关文档,将检索到的信息作为上下文注入到语言模型的提示中,从而增强模型的回答质量。│ RAG 工作流程 ││ ││ 用户问题 向量检索 上下文增强 生成回答 ││ ▼ ││ │ A │ ││ ││ 1. 接收问题 ││ 2. 将问题转换为向量,在知识库中检索相似文档 ││ 3. 将检索到的文档作为上下文添加到提示词中 │。

步子哥的博客 462

513. 找树左下角的值

【代码】513. 找树左下角的值。

Wzideng@qq.com 1197

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java实现 LeetCode 513 找树左下角的值

513. 找树左下角的值 给定一个二叉树,在树的最后一行找到最左边的值。 示例 1: 输入: 2 / \ 1 3 输出: 1 示例 2: 输入: 1 / \ 2 3 / / \ 4 5 6 / 7 输出: 7 注意: 您可以假设树(即给定的根节点)不为 NULL。 /** * Definition for a binary ...

南 墙 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【LeetCode】第513题:找树左下角的值

LeetCode 链接:https://leetcode-cn.com/problems/find-bottom-left-tree-value/ 题目:给定一个二叉树,在树的最后一行找到最左边的值。 分析:层次遍历二叉树,并在遍历时记录下一层的个数和当前的层的个数,当当前层的数量为 0 时,如果下一层的节点数量大于0,则更新 val 的值为队列中队首的值。遍历结束时,返回的 val 即为...

Java学习 575

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Leetcode513. 找树左下角的值

Leetcode513. 找树左下角的值 题目: 给定一个二叉树,在树的最后一行找到最左边的值。 示例 1: 输入: 2 / \ 1 3 输出: 1 示例 2: 输入: 1 / \ 2 3 / / \ 4 5 6 / 7 输出:7 题解: 二叉树的遍历,从右到左的遍历,直到最后。 java代码: /** * 找出最左面的数值,为应对不同结构的树结构,需要在遍历右分

会流泪de鱼的博客 230

刷题计划 day16 二叉树(五)【404. 左叶子之和】【513. 找树左下角的值】【112. 路径总和】【113. 路径总和 II】

⚡刷题计划day16二叉树(五)继续,往期可看专栏,关注不迷路,刷题计划 day16 二叉树(五)【404. 左叶子之和】【513. 找树左下角的值】【112. 路径总和】【113. 路径总和 II】

weixin_72499901的博客 1220

代码随想录算法训练营第18天|513.找树左下角的值、112.路径总和、113.路径总和二、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树

树 数据结构 算法 Java

qq_45023167的博客 1306

[LeetCode] 513.找树左下角的值(java实现)

[LeetCode] 513.找树左下角的值(java实现)1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结 1. 题目 2. 读题(需要重点注意的东西) 难点在于如何控制每一层的输出,以及最底层、最左边的节点如何输出。 3. 解法 解法:BFS /** * Definition for a binary tree node. * public class TreeNode { * int val; * Tre

cloud的博客 376

LeetCode 513. 找树左下角的值(Find Bottom Left Tree Value)

513. 找树左下角的值 513. Find Bottom Left Tree Value 题目描述 给定一个二叉树,在树的最后一行找到最左边的值。 LeetCode513. Find Bottom Left Tree Value中等 示例 1: 输入: 2 / \ 1 3 输出: 1 示例 2: 输入: 1 / \ 2 3 ...

weixin_30778805的博客 149

代码随想录Day16:二叉树(找树左下角的值、路径总和、从中序与后序遍历序列构造二叉树——全递归版本)

因为前序(根左右)和后序(左右根)能定义根的位置,但无法判断左右区间。

m0_73724472的博客 1383

【LeetCode刷题日记】513.二叉树左下角值的三种解法:从常规BFS到DFS的优雅之旅

本文探讨了如何找出二叉树最底层最左边节点的值,提出了两种解法:BFS层序遍历和DFS深度优先搜索。BFS解法通过队列按层遍历,记录每层第一个节点,最终返回最后一层的第一个节点值。DFS解法则利用递归优先遍历左子树,当遇到更深层的叶子节点时更新结果。文章通过示例和详细执行步骤演示了两种方法的实现过程,并分析了其核心机制。最终指出DFS通过先左后右的遍历顺序和深度比较机制,能够准确找到最底层最左边的节点。两种方法各有特点,BFS直观易理解,DFS代码更简洁。

任岁月风干理想再也找不回真的我 952
上一篇: java数据结构与算法刷题-----LeetCode106. 从中序与后序遍历序列构造二叉树
下一篇: java数据结构与算法刷题-----LeetCode654. 最大二叉树
ydenergy_殷志鹏
博客等级 码龄7年 5886粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值