首页 > 试题广场 >

有多少个不同的二叉搜索树

[编程题]有多少个不同的二叉搜索树
  • 热度指数:835 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个由节点值从 1 到 n 的 n 个节点。请问由多少种不同的方法用这 n 个节点构成互不相同的二叉搜索树。

例如:当n=2时有


数据范围:
示例1

输入

2

输出

2
示例2

输入

3

输出

5
package main
//import "fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 
 * @return int整型
*/
func BSTCount( n int ) int {
    vis:=map[int]int{}
    var order func(int)int
    order=func(n int)int{
        if _,ok:=vis[n];ok{
            return vis[n]
        }
        if n<2{
            return 1
        }
        cnt:=0
        for i:=1;i<=n;i++{
            cnt+=order(i-1)*order(n-i)
        }
        vis[n]=cnt
        return cnt
    }
    return order(n)
}

发表于 2023-03-14 21:17:42 回复(0)