给定一个由节点值从 1 到 n 的 n 个节点。请问由多少种不同的方法用这 n 个节点构成互不相同的二叉搜索树。
例如:当n=2时有
数据范围:
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)
}