当前位置:网站首页>leetcode二叉树系列(二叉搜索树篇)
leetcode二叉树系列(二叉搜索树篇)
2022-08-04 09:03:00 【你食不食油饼】
目录
1、不同的二叉搜索树
题目描述:
思路:既然要我们求n个节点组成的二叉搜索树,就可以看作是求当根节点为1组成的二叉搜索树+根节点为2组成的二叉搜索树+根节点为3构成的二叉搜索树+……
G(n) = f(1) + f(2) + f(3) +……
而根节点为1组成的二叉搜索树有多少种呢,根节点不变,左边节点构成的二叉搜索树个数*右边节点构成的二叉搜索树个数
由于是二叉搜索树,左边结点的个数就是(根节点-1),右边结点的个数(总结点数-根节点)
f(1) = G(0)*G(n-1) ,同样的f(2) = G(1)*G(n-2),f(3) = G(2)*G(n-3)……
f(i) = G(i-1)*G(n-i)
两个公式合起来
G(n) = G(0)*G(n-1) + G(1)*G(n-2) + G(2)*G(n-3)+……
这就是我们大名鼎鼎的卡特兰数公式!
得到这个规律,我们思路瞬间就清晰了,这不就是典型的动态规划嘛,咱们直接遍历,从dp[2],直到求到dp[n]
进入代码:
public int numTrees(int n) {
int[] dp = new int[n+1];
dp[0] = 1;
dp[1] = 1;
for(int i = 2; i<= n;i++){
for(int j = 1 ; j <= i ; j++ ){
dp[i] += dp[j-1]*dp[i-j];
}
}
return dp[n];
}
2、验证二叉搜索树
题目描述:
思路:二叉搜索树,就是要求左边节点值小于根节点,根节点小于右边节点,所以我们要判断是否为二叉搜索树,最好的办法就是利用中序遍历,不断遍历,不断比较;
而且是典型的递归问题,我们先要递归到左子树的最左节点,然后把这个最左结点的值记录下来pre,回溯回来与它的根节点比较,然后再向当前根节点的根节点递归,依次比较,当我们左子树递归结束后,此时pre的值是左子树的最右节点,这是左子树的最大值,我们又与根节点root比较,再进入右子树递归;
直接看代码:
long pre = Long.MIN_VALUE;
public boolean isValidBST(TreeNode root) {
if(root == null) return true;
if(!isValidBST(root.left)) return false;
if(root.val <= pre) return false;
pre = root.val;
return isValidBST(root.right);
}
只要思路清晰了,代码很好写出来!
持续更新中~~
边栏推荐
- 2022-08-02 分析RK817 输出32k clock PMIC_32KOUT_WIFI给WiFi模块 clock 注册devm_clk_hw_register
- 【论文笔记】Understanding Long Programming Languages with Structure-Aware Sparse Attention
- 2022-08-02 Analyze RK817 output 32k clock PMIC_32KOUT_WIFI to WiFi module clock register devm_clk_hw_register
- [Cloud Residency Co-Creation] HCSD Celebrity Live Streaming – Employment Guide
- ZbxTable 2.0 重磅发布!6大主要优化功能!
- ShowMeAI —— Show u 三连
- TiCDC迁移-TiDB到MySQL测试
- 请你谈谈网站是如何进行访问的?【web领域面试题】
- 大佬们,mysql里text类型的字段,FlinkCDC需要特殊处理吗 就像处理bigint uns
- DOM简述
猜你喜欢
BFM模型和Landmarks可视化
【正点原子STM32连载】第四章 STM32初体验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
sql在字段重复时 对某个字段根据最新时间取数
2022年化工自动化控制仪表考试模拟100题及模拟考试
我和 TiDB 的故事 | TiDB 对我不离不弃,我亦如此
How many assertion methods are commonly used in JMeter?
Could you please talk about how the website is accessed?[Interview questions in the web field]
telnet远程登录aaa模式详解【华为eNSP】
布局管理器
Yolov5 replaces the backbone network of "Megvii Lightweight Convolutional Neural Network ShuffleNetv2"
随机推荐
Fiddler(一)安装
我和 TiDB 的故事 | TiDB 对我不离不弃,我亦如此
ZbxTable 2.0 重磅发布!6大主要优化功能!
Quick tips for getting out of a single
oracle sql 多表查询
软件工程国考总结——判断题
layout manager
张朝阳对话俞敏洪:谈宇宙、谈焦虑、谈创业、谈退休、谈人生
优炫数据库只有数据文件如何恢复
SQL后计算的利器
No module named 'flask_misaka' has been resolved [BUG solution]
.NET深入解析LINQ框架(五:IQueryable、IQueryProvider接口详解)
【论文笔记】Dynamic Convolution: Attention over Convolution Kernels
四大网络攻击常见手段及防护
户外徒步旅行
It is found that several WRH tables are locked, what should I do?
Unity3D data encryption
Since his 97, I roll but he...
Shared_preload_libraries导致很多语法不支持
如何设计一个注册中心