前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Leetcode 96. 不同的二叉搜索树

Leetcode 96. 不同的二叉搜索树

作者头像
zhipingChen
发布2019-07-15 14:41:11
3380
发布2019-07-15 14:41:11
举报
文章被收录于专栏:编程理解

题目描述

给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?

示例 1:

解法

不妨以

f(i)
f(i)

表示

i
i

个整数能够组成的二叉搜索树的种类数。则对于

n
n

个整数组成搜索树的种类数,需要分别计算出左子树个数为

0
0

时二叉树的种类数,左子树个数为

1
1

时二叉树的种类数......左子树个数为

n-1
n-1

时二叉树的种类数,然后相加即可。

若整数个数为

n
n

,当左子树个数为

x
x

时,则右子树个数为

n-1-x
n-1-x

,此时二叉树的种类数为

f(x)*f(n-1-x)
f(x)*f(n-1-x)

代码语言:javascript
复制
class Solution:
    def numTrees(self, n: int) -> int:
        dp=[1]*(n+1)
        for i in range(2,n+1):
            tmp=0
            for j in range(0,i):
                tmp=tmp+dp[j]*dp[i-1-j]
            dp[i]=tmp
        return dp[n]
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.07.13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档