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

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

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

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

示例:
输入: [10,5,15,1,8,null,7]10 / \ 5  15 / \   \ 
1   8   7
输出: 3
解释: 高亮部分为最大的 BST 子树。(158)返回值 3 在这个样例中为子树大小。
进阶:
你能想出用 O(n) 的时间复杂度解决这个问题吗?

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/largest-bst-subtree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 自底向上dfs,返回值 子树 min, max, node个数, 是bst?
class Solution {int maxNode = 1;
public:int largestBSTSubtree(TreeNode* root) {if(!root) return 0;dfs(root);return maxNode;}vector<int> dfs(TreeNode* root)//返回子树min,max,node个数,是bst?{								//       0   1    2       3if(!root) return {INT_MAX,INT_MIN,0,1};auto l = dfs(root->left);auto r = dfs(root->right);bool bst = (l[3] && r[3] && l[1] < root->val && root->val < r[0]);int node = l[2]+r[2]+1;int MAX = !root->right ? root->val : r[1],MIN = !root->left ? root->val : l[0];if(bst)maxNode = max(maxNode, node);return {MIN,MAX,node,bst};}
};

20 ms 30.8 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475135.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql server :distinct 与order by 一起使用要注意

一次在sql server 2008 中写sql语句&#xff1a;select distinct firstname,lastname from person order by person_id 错误提示&#xff1a; Msg 145, Level 15, State 1, Line 1ORDER BY items must appear in the select list if SELECT DISTINCT is specified. 哦&#xff…

LeetCode 663. 均匀树划分(树形DP)

文章目录1. 题目2. 解题1. 题目 给定一棵有 n 个结点的二叉树&#xff0c;你的任务是检查是否可以通过去掉树上的一条边将树分成两棵&#xff0c;且这两棵树结点之和相等。 样例 1: 输入: 5/ \10 10/ \2 3 输出: True 解释: 5/ 10和: 1510/ \2 3和: 15样例 2: 输入…

oracle磁带库清洁带标签,磁带库、磁带机和介质支持

44803480348044903480、3490E348048903480、3490E348094903480、3490E34809490EE3480(只读)、3490E、EECART3480SD3DD3A、DD3B、DD3CDD3D9840STK1RSTK1U9840-3590STK1RSTK1UT9840BSTK1RSTK1UT9840B35STK1RSTK1UT9840CSTK1RSTK1UT9840C35STK1RSTK1UT9840DSTK1RSTK1YT9840D35STK1…

简单的Client / Server 使用 linux 伯克利 socket实现

服务器&#xff1a; /**run command:* g server.cpp -o server && ./server*/#ifndef SERVER #define SERVER#include<arpa/inet.h> #include<assert.h> #include<stdio.h> #include<stdlib.h> #include<pthread.h> #include<errno.h…

LeetCode 261. 以图判树(全部连通+边数=V-1)

文章目录1. 题目2. 解题1. 题目 给定从 0 到 n-1 标号的 n 个结点&#xff0c;和一个无向边列表&#xff08;每条边以结点对来表示&#xff09;&#xff0c; 请编写一个函数用来判断这些边是否能够形成一个合法有效的树结构。 示例 1&#xff1a; 输入: n 5, 边列表 edges …

oracle自增自删分区的脚本,oracle实现自增方法(错误ora-04098解决)

mysql实现自增很简单&#xff0c;在主键处加上auto_increment关键字就可以了&#xff0c;而oracle实现起来并不是这么容易的&#xff0c;需要借助序列和触发器才能实现。具体代码如下&#xff1a;1.建立一个表&#xff1a;create table 户口本 (户号 INTEGER not null,户别 CHA…

php实现数字滚动效果,vue如何实现数字滚动增加效果?代码示例

项目中需要做数字滚动增加的效果&#xff0c;一开始很懵&#xff0c;研究了一下原理&#xff0c;发现很简单&#xff0c;贴出来分享一下 ^_^数字滚动组件&#xff1a;0props: {time: {type: Number,default: 2},value: {type: Number,default: 720000}},methods: {numberGrow (…

LeetCode 1061. 按字典序排列最小的等效字符串(并查集)

文章目录1. 题目2. 解题1. 题目 给出长度相同的两个字符串&#xff1a;A 和 B&#xff0c;其中 A[i] 和 B[i] 是一组等价字符。 举个例子&#xff0c;如果 A "abc" 且 B "cde"&#xff0c;那么就有 a c, b d, c e。 等价字符遵循任何等价关系的一般…

SheevaPlug是什么,有什么用途

简单说 SheevaPlug 是由 ARM CPU加上 Linux 作业系统的小型计算机, 用一个手掌就可以托住其中 CPU 是 1.2GHz 主频, 512MB DDR2, 512MB NAND Flash, 1个 USB口以及1个外接 SD 卡槽这个小计算机瑞安装了 linux 2.6.x 以及 debian 5.0 文件系统,拿到这个 sheevaplug 后你可以自行…

导出oracle表中数据,从Oracle中导出数据表!

C:\Documents and Settings\Administrator>expExport: Release 9.2.0.1.0 - Production on 星期四 12月 7 12:52:05 2006Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.用户名: peam口令:连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - …

LeetCode 366. 寻找二叉树的叶子节点(上下翻转二叉树+BFS)

文章目录1. 题目2. 解题1. 题目 给你一棵二叉树&#xff0c;请按以下要求的顺序收集它的全部节点&#xff1a; 依次从左到右&#xff0c;每次收集并删除所有的叶子节点重复如上过程直到整棵树为空 示例: 输入: [1,2,3,4,5]1/ \2 3/ \ 4 5 输出: [[4,5,3],[2],[1]…

白话地图投影之初识地球

本文是Koala带你进入GIS世界的开篇&#xff0c;Koala打算用简单通俗的语言为大家介绍地图投影&#xff0c;帮助GISer理解地图投影的概念。作为进入GIS世界多年的老鸟&#xff0c;Koala也是在不断的实战中才真正理解和掌握地图投影的奥秘。 我们生活的地球长啥模样&#xff1f; …

oracle聚合函数wmsys,oracle 自定义聚合函数

oracle提供了聚合函数的API可以让我们方便的自己定义聚合函数。详细看oracle官方文档&#xff1a;http://docs.oracle.com/cd/B14117_01/appdev.101/b10800/dciaggref.htmhttp://docs.oracle.com/cd/B14117_01/appdev.101/b10800/dciaggfns.htm#g1008306wmsys.wm_concat(合并行…

欧洲杯2012

----------------------------------------------------------------------------- 欧洲杯2012 ----------------------------------------------------------------------------- 下载地址&#xff1a;http://itunes.apple.com/cn/app/ou-zhou-bei2012/id531622806?mt8 系统要…

LeetCode 245. 最短单词距离 III

文章目录1. 题目2. 解题1. 题目 给定一个单词列表和两个单词 word1 和 word2&#xff0c;返回列表中这两个单词之间的最短距离。 word1 和 word2 是有可能相同的&#xff0c;并且它们将分别表示为列表中两个独立的单词。 示例: 假设 words ["practice", "ma…

oracle 汇总上面所有,Oracle经验技巧汇总

Oracle经验技巧汇总对于Oracle学习者来说&#xff0c;掌握一些经验技巧是很有必要的&#xff0c;下面就和小编一起来学习学习吧!1.删除表空间DROP TABLESPACE TableSpaceName [INCLUDING CONTENTS [AND DATAFILES]]2.删除用户DROP USER User_Name CASCADE3.删除表的注意事项在删…

think in java - 第一章 学习笔记

总观第一章&#xff0c;作者试图为我们讲述面向对象编程&#xff08;oop&#xff09;的核心思想&#xff0c;而我的见解是&#xff0c;对象是对具体事物的一种抽象&#xff0c;对象与对象直接的关系通过消息联系。 关于类的三大特性&#xff1a;继承&#xff0c;多态&#xff0…

LeetCode 484. 寻找排列(找规律+贪心)

文章目录1. 题目2. 解题1. 题目 现在给定一个只由字符 ‘D’ 和 ‘I’ 组成的 秘密签名。 ‘D’ 表示两个数字间的递减关系&#xff0c;‘I’ 表示两个数字间的递增关系。 并且 秘密签名 是由一个特定的整数数组生成的&#xff0c;该数组唯一地包含 1 到 n 中所有不同的数字&a…

php将文件夹压缩成zip文件,将文件夹压缩成zip文件的php代码_php实例

1.请先下载我准备好的zip.php工具类&#xff0c;下载后解压&#xff0c;将里面的文件放入对应的目录中&#xff0c;我是放在虚拟目录下的include文件夹中。2.在你的php文件中加入下面代码即可复制代码 代码如下:require_once "./include/zip.php";$zip new PHPZip()…

LeetCode 651. 4键键盘(DP,Ctrl+CV)

文章目录1. 题目2. 解题1. 题目 假设你有一个特殊的键盘包含下面的按键&#xff1a; Key 1: (A)&#xff1a;在屏幕上打印一个 A。Key 2: (Ctrl-A)&#xff1a;选中整个屏幕。Key 3: (Ctrl-C)&#xff1a;复制选中区域到缓冲区。Key 4: (Ctrl-V)&#xff1a;将缓冲区内容输出…