96. 不同的二叉搜索树
题目描述:
给你一个整数 n
,求恰由 n
个节点组成且节点值从 1
到 n
互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。
解题思路:
我们首先模拟下n=3的情况,从简单示例入手,看看能不能找到规律。
因此可以总结出规律:
可以使用动态规划进行求解,用一个长度为n的数组依次存储计算过的子问题F(i)。
var numTrees = function(n) { let arr = []; arr[0] = 1; let cur = 1; while(cur<=n){ let sum = 0; for(let i=0;i){ sum += arr[i]*arr[cur-1-i]; } arr[cur] = sum; cur++; } return arr[n]; };