​LeetCode刷题实战333:最大 BST 子树

AI中台系统设计方案探讨 集成JupyterLab、低代码建模工具(如H2O.ai)、预训练模型库(Hugging Face、PaddleHub)。:通过REST/gRPC接口封装AI能力(如OCR、语音识别),支持流量控制与鉴权(如Kong、Apigee)。:服务注册发现(Consul)、熔断降级(Hystrix)、监控告警(Prometheus+Grafana)。:分布式存储(如HDFS、Ceph)与对象存储(如S3、OSS),支持海量数据高速读写。加密传输(TLS)、动态脱敏(如数据掩码)、访问控制(RBAC)。 阅读详情

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !

今天和大家聊的问题叫做 最大 BST 子树,我们先来看题面:

https://leetcode-cn.com/problems/largest-bst-subtree/

Given a binary tree, find the largest subtree which is a Binary Search Tree (BST), where largest means subtree with largest number of nodes in it. 

Note: A subtree must include all of its descendants.

给定一个二叉树,找到其中最大的二叉搜索树(BST)子树,其中最大指的是子树节点数最多的。

注意:

子树必须包含其所有后代。

示例

示例:

输入: [10,5,15,1,8,null,7]

   10 
   / \ 
  5  15 
 /  \    \ 
1   8   7

输出: 3
解释: 高亮部分为最大的 BST 子树。
     返回值 3 在这个样例中为子树大小。

解题

思路一:判断每个节点是否是二叉搜索树

class Solution:
    def largestBSTSubtree(self, root: TreeNode) -> int:

        self.res = 0
        def isValid(root, t1, t2):
            if not root:
                return 0
            if root.val >= t2 or root.val <= t1:
                return float("-inf")
            return 1 + isValid(root.left, t1, root.val) + isValid(root.right, root.val, t2)

        def helper(root):
            if not root:
                return 
            self.res = max(self.res, isValid(root,float("-inf"), float("inf")) )
            helper(root.left)
            helper(root.right)

好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。

上期推文:

LeetCode1-320题汇总,希望对你有点帮助!

LeetCode刷题实战321:拼接最大数

LeetCode刷题实战322:零钱兑换

LeetCode刷题实战323:无向图中连通分量的数目

LeetCode刷题实战324:摆动排序 II

LeetCode刷题实战325:和等于 k 的最长子数组长度

LeetCode刷题实战326:3的幂

LeetCode刷题实战327:区间和的个数

LeetCode刷题实战328:奇偶链表

LeetCode刷题实战329:矩阵中的最长递增路径

LeetCode刷题实战330:按要求补齐数组

LeetCode刷题实战331:验证二叉树的前序序列化

LeetCode刷题实战332:重新安排行程

Flowable前端可视化配置动态审批人:告别硬编码,实现部门领导、项目经理自动分配 本文详细介绍了Flowable前端可视化配置动态审批人的全栈解决方案,通过表达式分配、监听器分配等动态审批人机制,实现从硬编码到智能分配的转变。文章提供了前端扩展bpmn-js设计器、后端动态解析实现方案及性能优化建议,帮助企业应对组织架构变动,提升审批流程的灵活性和效率。 阅读详情

相关推荐

智能织梦:基于Rokid AR眼镜的家庭情感记忆增强系统设计与实践

本文介绍了基于Rokid AR眼镜的'智能织梦'系统,通过增强现实技术捕捉和重现家庭情感记忆。系统利用多模态传感器和轻量级情感识别模型,自动记录家庭互动中的情感峰值时刻,并生成沉浸式记忆片段。测试数据显示,该系统显著提升了家庭情感互动的频率和质量,特别适用于多代同堂家庭和记忆唤醒场景。

sre5engineer的博客 536

leetcode:333. 最大 BST 子树的节点数

题目大概意思是:所以,本题需要解决两个问题:这个最大的子搜索二叉树,有两种可能性:包含二叉树头节点,不包含二叉树头结点。也就是说,root每次都需要问一问左子树和右子树:又因为,当最大搜索二叉树的节点数和节点数相等就意味着整个子树是搜索二叉树,所以可以化简为最大搜索二叉树的节点数、max、min、节点数。所以,定义一个辅助类: 递归求解当前子树的info: 调用上面方法获取结果: 小结 二叉树递归套路总结:.........

OceanStar的博客 455

Ubuntu 24.04 下 NoMachine 极速安装与远程桌面配置全攻略

本文详细介绍了在Ubuntu 24.04系统下安装和配置NoMachine远程桌面的完整指南。从系统准备、分步安装到性能调优和常见问题解决,帮助用户快速实现低延迟的远程桌面访问。特别适合开发者和IT管理员在Linux环境下高效部署远程工作环境。

moon9的博客 945

leetcode333

当前节点作为根节点的话,对应的子树是否为BST,需要判断他的左子树的状态和它的右子树的状态,并且数值是否满足大小关系。 所以需要后序遍历。 那么如何记录数字排序的状态呢?通过自己封装一层MyNode,记录所在子树的最大值和最小值。走到每个点的时候,都会判断左子树的最大值,右子树的最小值和当前节点的值进行大小比较。 public class test { int res = 0; public int largeestBSTSubTree(TreeNode root){ po.

xiaobailaji的博客 331

Python自动化批量识别化学分子结构——从图片到SMILES/SDF的实战指南

本文提供了使用Python自动化批量识别化学分子结构图片的实战指南。详细对比了基于Molvec API的在线快速方案与本地部署OSRA工具的两种路径,包含完整的代码示例、环境配置及优化技巧,帮助化学研究者高效地将图片批量转换为SMILES或SDF格式,显著提升数据处理效率。

apple5的专栏 945

delphi android发送与接收广播

在发送广播时,使用`SendBroadcast`函数,并传入广播的Action。在接收广播时,创建一个继承自`TAndroidBroadcastReceiver`的类,并在`onReceive`方法中处理接收到的广播。然后,使用`RegisterBroadcastReceiver`函数注册广播接收器,并在`UnregisterBroadcastReceiver`函数中取消注册。请注意替换示例代码中的`YOUR_ACTION`为实际的广播Action。// 处理接收到的广播。

GuoGuoABC 1207

【LeetCode - 333】最大 BST 子树

【中等】树

学哥斌的博客 1027

TYPE-C接口电路设计篇(一)

常见USB接口类型 随着USB Type-C接口的推行,USB Type-C是一种通用串行总线(USB)的硬件接口形式,USB Type-C接口在消费类产品普及程度越来越高,常见的适配器、笔电、手机等产品都兼容USB Type-C设计,接口多元化逐渐趋向归一,从而可以看出USB Type-C的重要性。 在了解USB Type-C接口之前,我们先来回顾下USB Type-A和USB Type-B接口,USB3.0 Type-A和Type-B接口定义分别如下。 USB 3.0...

JWu的博客 3万+

LeetCode 333. 最大 BST 子树(递归)*

文章目录1. 题目2. 解题 1. 题目 给定一个二叉树,找到其中最大的二叉搜索树(BST)子树, 其中最大指的是子树节点数最多的。 注意: 子树必须包含其所有后代。 示例: 输入: [10,5,15,1,8,null,7] 10 / \ 5 15 / \ \ 1 8 7 输出: 3 解释: 高亮部分为最大的 BST 子树。(1,5,8) 返回值 3 在这个样例中为子树大小。 进阶: 你能想出用 O(n) 的时间复杂度解决这个问题吗? 来源:力扣(Le

Michael是个半路程序员 1765

LTE网络下的SMS收发(SMS Over SGs方案的详细流程)

关键词: IMS,SMS, LTE, MSC, MME, EPS,eNodeB, SMS Over SGs, SMS Over IMS 2G时代由于采用了比较复杂的CS/PS域架构,所以SMS(短信)作为上个世纪的产物,一直寄居在2G的CS域架构下。看看核心网的配置,其实SMS的收发还是比较复杂的。 介绍下面的信息之前你需要去百度一下这些关键词,这里我只说明比较重要的三个单元 MS 移动终端...

kevin的博客 2万+

不加行也能填满:用 ABAP BDC 驯服 Table Control 滚动录制缺陷,批量维护供应商银行账户

摘要 本文探讨了在SAP ECC/S4HANA系统中处理供应商主数据时,Table Control控件带来的批量导入挑战。文章指出,银行账户维护界面中Table Control的滚动动作难以被录制工具捕捉,导致批量导入数据时仅能填充前5行。解决方案是通过BDC_OKCODE显式触发翻页(如=P+),并配合行号拼接(如(01)~(05))将数据写入不可见行。文中提供了完整的ABAP程序示例,展示了如何读取外部文件、动态生成BDCDATA、处理表格翻页逻辑,最终通过CALL TRANSACTION执行XK01事

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 272

LeetCode第333场周赛

2023.2.19LeetCode第333场周赛

shenyuhan的博客 540

【YOLOv11改进- 主干网络】YOLOv11+WTConv(ECCV2024): 基于YOLOv11的主干网络改进,大感受野的小波卷积

论文提出了WTConv,这是一个使用级联小波分解的层,并执行一组小卷积核的卷积,每个卷积专注于输入的不同频率带,并具有越来越大的感受野。这个过程能够在输入中对低频信息给予更多重视,同时仅增加少量可训练参数。实际上,对于一个  的感受野,可训练参数数量只随着  的增长而呈对数增长。而WTConv与常规方法的参数平方增长形成对比,能够获得有效的卷积神经网络(CNN),其有效感受野(ERF)大小前所未有。

qq_41304809的博客 1401

LeetCode第333题_最大BST子树

LeetCode 333题解析:最大BST子树 这篇技术文章详细解析了LeetCode第333题"最大BST子树"的解题思路。题目要求找到二叉树中节点数最多的二叉搜索树(BST)子树。文章提供了三种编程语言实现(C#、Python、C++),采用自底向上的递归方法,通过维护子树信息来高效解决问题。关键点包括:定义辅助类存储子树状态、递归判断BST条件、更新最大子树大小。时间复杂度为O(n),空间复杂度为O(h)。文章包含示例分析、图解思路和性能对比,适合中级程序员提升二叉树算法能力。

qq_40263592的博客 1561

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【中等】力扣算法题解析LeetCode333:最大二叉搜索子树

给定二叉树,寻找节点数最多的二叉搜索子树(BST)。子树必须满足BST性质且包含所有后代节点。 解题方法: 采用后序遍历(DFS),递归返回子树的min、max、节点数和是否为BST。通过比较左右子树信息判断当前子树是否合法,动态更新最大BST节点数。 核心逻辑: 空节点:返回极值避免干扰父节点判断。 BST条件:左右子树均为BST,且当前节点值满足大小关系。 全局更新:合法BST的节点数即时比较并记录最大值。

ylumwd的博客 955

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

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

【leetcode】333 最大BST子树(二叉树,递归,树形DP)

题目链接:https://leetcode-cn.com/problems/largest-bst-subtree/ 题目描述 给定一个二叉树,找到其中最大的二叉搜索树(BST)子树,其中最大指的是子树节点数最多的。 注意: 子树必须包含其所有后代。 示例: 输入: [10,5,15,1,8,null,7] 10 / \ *5 15 / \ \ *1 *8 ...

zjwreal 1289

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

LeetCode 333. Largest BST Subtree(最大二叉搜索树)

原题网址:https://leetcode.com/problems/largest-bst-subtree/ Given a binary tree, find the largest subtree which is a Binary Search Tree (BST), where largest means subtree with largest number of nodes

James Pan 2337

leetcode_333_最大 BST 子树@@二叉树

自顶向下 TreeNode prev; private boolean isBST(TreeNode root) { if(root==null) return true; boolean left = isBST(root.left); if(prev!=null&&prev.val>=root.val) { //>=这题节点有可能相同,相同节点不是BST return false; } prev=.

ruochen82155551的博客 255

leetcode 333. Largest BST Subtree

leetcode 333. Largest BST Subtree /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val =

独钓寒江雪 852

[Swift]LeetCode333. 最大的二分搜索子树 $ Largest BST Subtree

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址:https://github.com/strengthen/LeetCode➤原文地址:https://www.cnblogs.com/stren...

weixin_30813225的博客 198

【LeetCode】最大 BST 子树(使用二叉树递归求解)

LeetCode 333:给定一个二叉树,找到其中最大的二叉搜索树(BST)子树,其中最大指的是子树节点数最多的。通过二叉树递归求解

小七的博客 602

[leetcode] 333. Largest BST Subtree 解题报告

题目链接: https://leetcode.com/problems/largest-bst-subtree/ Given a binary tree, find the largest subtree which is a Binary Search Tree (BST), where largest means subtree with largest number of node

小榕流光的专栏 5304

【Leetcode】333. Largest BST Subtree

题目地址: https://leetcode.com/problems/largest-bst-subtree/ 给定一个二叉树, 求其最大二叉搜索子树的节点个数。 思路是分治。在分治DFS返回的时候,要把当前节点为树根的子树是否是BST、有多少个节点、最大值、最小值四个信息都要返回给递归的上层。前两个信息可以捏再一起返回,例如,可以用−1-1−1代表不是BST,000代表是空树,正整数代表节点个数。这样判断一个节点为根的子树是否是BST就可以这样判断: 1、先递归搜集左右子树的信息; 2、如果左右子树有一

数学、算法爱好者的博客 457

力扣(LeetCode)333. 最大 BST 子树(2022.11.30)

输入:root = [4,2,7,2,3,5,null,2,null,null,null,null,null,1]给定一个二叉树,找到其中最大的二叉搜索树(BST)子树,并返回该子树的大小。其中,最大指的是子树节点数最多的。链接:https://leetcode.cn/problems/largest-bst-subtree。解释:本例中最大的 BST 子树是高亮显示的子树。输入:root = [10,5,15,1,8,null,7]左子树的值小于其父(根)节点的值。右子树的值大于其父(根)节点的值。

ChaoYue_miku的博客 333

LeetCode 333. Largest BST Subtree

Given a binary tree, find the largest subtree which is a Binary Search Tree (BST), where largest means subtree with largest number of nodes in it.Note: A subtree must include all of its descendants.

xinqrs01的博客 633

Leetcode 333. Largest BST Subtree (Medium) (cpp)

Leetcode 333. Largest BST Subtree (Medium) (cpp)

还是需要多学习!闷声大发财,这是坠吼的! 641
上一篇: 谷歌发布新编程语言,专治SQL各种“不服”
下一篇: 微软自家的Linux发行版开源了!
编程IT圈
博客等级 码龄6年 1130粉丝 544原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

编程IT圈

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

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

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

打赏作者

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

抵扣说明:

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

余额充值