首页 > 其他分享 >力扣96 不同的二叉搜索树

力扣96 不同的二叉搜索树

时间:2023-02-24 22:33:32浏览次数:31  
标签:int 二叉 力扣 搜索 节点 dp 96

题目:

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。

示例:

输入:n = 3
输出:5

思路:

披着二叉树外套的动态规划题

class Solution {
    public int numTrees(int n) {
        //1.dp[i]:由i个节点可以组成的二叉搜索树种树
        int[] dp=new int[n+1];
        //2.初始化:dp[0]=1,dp[1]=2
        dp[0]=1;
        dp[1]=2;
        //3.递推公式:dp[3]=2*2+dp[1]*dp[2]*2  dp[i]=dp[i-1]*2+dp[0]*dp[i-2]+dp[1]*dp[i-3]+...+dp[i-2]*dp[0]
        //4.遍历顺序
        for(int i=2;i<n;i++){
            int sum=0;
            for(int j=0;j<=i-2;j++){
                sum+=dp[j]*dp[i-2-j];
            }
            dp[i]=dp[i-1]*2+sum;
        }
        //5.举例验证
        return dp[n-1];     
    } 
}  

 

 

标签:int,二叉,力扣,搜索,节点,dp,96
From: https://www.cnblogs.com/cjhtxdy/p/17153398.html

相关文章

  • 数据结构基础—二叉树的非递归遍历和基本操作
    数据结构基础—二叉树的非递归遍历和基本操作非递归遍历先序//非递归先序遍历二叉树voidzhongxu(BiTreeT){BiTreestack[MAX];//模拟栈 BiTreenode;int......
  • 力扣343 整数拆分
    题目:给定一个正整数n,将其拆分为k个正整数的和(k>=2),并使这些整数的乘积最大化。返回你可以获得的最大乘积。示例:输入:n=2输出:1解释:2=1+1,1......
  • Java力扣
    目录JZ6从尾到头打印链表JZ24反转链表JZ25合并两个排序的链表JZ52两个链表的第一个公共结点JZ23链表中环的入口结点JZ6从尾到头打印链表JZ24反转链表JZ25合并......
  • 关于二叉树的前序、中序、后序三种遍历
    二叉树遍历分为三种:前序、中序、后序,其中序遍历最为重要。为啥叫这个名字?是根据根节点的顺序命名的。比如上图正常的一个满节点,A:根节点、B:左节点、C:右节点,前序顺序是ABC(根......
  • 翻转数组(力扣)
    题目:给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。示例1:输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1......
  • 了解舵机以及MG996R的控制方法
    了解舵机以及MG996R的控制方法1.舵机基础知识:舵机是遥控航空、航天模型控制动作,改变方向的重要组成部件,舵机是一种位置(角度)伺服的驱动器。舵机主要适用于那些需要角度......
  • 【LeetCode二叉树#05】平衡二叉树
    力扣题目链接(opensnewwindow)](https://leetcode.cn/problems/balanced-binary-tree/)给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为......
  • 力扣63 不同路径2
    题目:一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Fi......
  • 算法随想Day21【二叉树】| LC669-修剪二叉搜索树、LC108-将有序数组转换为二叉搜索树
    LC669.修剪二叉搜索树相当于一个中序遍历吧,当某个节点<low时,其右子树的各个节点值虽然都比该节点值大,但仍可能存在<low的,所以要据于次节点,向其右子树进军遍历,等回溯时,del......
  • 力扣62 不同路径
    题目:一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“F......