当前位置:网站首页>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);
}只要思路清晰了,代码很好写出来!
持续更新中~~
边栏推荐
猜你喜欢
![Layer 3 Switch/Router OSPF Configuration Details [Huawei eNSP Experiment]](/img/28/1a7ad13a15287a4cb84aabf39202a4.png)
Layer 3 Switch/Router OSPF Configuration Details [Huawei eNSP Experiment]

2022-08-02 分析RK817 输出32k clock PMIC_32KOUT_WIFI给WiFi模块 clock 注册devm_clk_hw_register

C Language Lectures from Scratch Part 6: Structure
![[Cloud Residency Co-Creation] HCSD Celebrity Live Streaming – Employment Guide](/img/50/86f0edaab8317e22c9ffdb2a2c6e93.png)
[Cloud Residency Co-Creation] HCSD Celebrity Live Streaming – Employment Guide

Anton Paar安东帕密度计比重计维修DMA35性能参数

交换机链路聚合详解【华为eNSP】

Apache Druid 实时分析数据库入门介绍

DeLighT:深度和轻量化的Transformer

I am 37 this year, and I was rushed by a big factory to...

Yolov5 replaces the backbone network of "Megvii Lightweight Convolutional Neural Network ShuffleNetv2"
随机推荐
从零开始C语言精讲篇6:结构体
命里有时终须有--记与TiDB的一次次擦肩而过
Could you please talk about how the website is accessed?[Interview questions in the web field]
[Punctuality Atom STM32 Serial] Chapter 4 STM32 First Experience Excerpted from [Punctual Atom] MiniPro STM32H750 Development Guide_V1.1
【云驻共创】HCSD 大咖直播–就业指南
NAT/NAPT地址转换(内外网通信)技术详解【华为eNSP】
2022-08-02 Analyze RK817 output 32k clock PMIC_32KOUT_WIFI to WiFi module clock register devm_clk_hw_register
王爽汇编语言第四章:第一个程序
How Oracle for current library or certain library data on the same server number?
sync-diff-inspector 使用实践
spark算子讲解
It is found that several WRH tables are locked, what should I do?
下午14:00面试,14:08低着头出来了 ,问的实在是太...
2022-08-02 分析RK817 输出32k clock PMIC_32KOUT_WIFI给WiFi模块 clock 注册devm_clk_hw_register
如何设计一个注册中心
一道[CSCCTF 2019 Qual]FlaskLight的详解再遇SSTI
Explanation of spark operator
RL学习笔记(一)
Thread类的基本使用。
I am 37 this year, and I was rushed by a big factory to...