0096. 不同的二叉搜索树
最后更新于
这有帮助吗?
这有帮助吗?
class Solution:
def numTrees(self, n: int) -> int:
if n <= 1:
return 1
res = 0
for i in range(1, n + 1):
res += self.numTrees(i - 1) * self.numTrees(n - i)
return resclass Solution:
visited = dict()
def numTrees(self, n: int) -> int:
if n in self.visited:
return self.visited.get(n)
if n <= 1:
return 1
res = 0
for i in range(1, n + 1):
res += self.numTrees(i - 1) * self.numTrees(n - i)
self.visited[n] = res
return resclass Solution {
vector<int> visited;
int dp(int n) {
if (visited[n]) return visited[n];
int ans = 0;
for (int i = 0; i < n; ++i) ans += dp(i) * dp(n - i - 1);
return visited[n] = ans;
}
public:
int numTrees(int n) {
visited.assign(n + 1, 0);
visited[0] = 1;
return dp(n);
}
};