leetcode96---不同二叉搜索树的数量

leetcode96—不同二叉搜索树的数量


一、题目描述

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。


示例1:
输入: n=3
输出:5

示例 2:
输入:n = 1
输出:1

二、方法

经过简单分析,可以看出n个结点的二叉搜索树与前n-1个存在一定关系,是在前n-1个的基础上进行计算的,所以这是一道动态规划题目。

列状态转移方程:
采用宏观的思考,不去在意过多的细节。只考虑不同数字作根节点的情况。

假设有n个结点,G(i)表示i个结点的二叉搜索树的数量

  • 1作根结点的时候,左子树要小于根结点,右子树要大于根结点。因此左子树有0个结点,右子树有n-1个结点→共有G(0)*G(n-1)种可能。
  • 2作结点,左子树1个结点,右子树n-2个结点→共有G(1)*G(n-2)种可能。
  • 以此类推
  • i作结点,左子树i-1个结点,右子树n-i个结点→共有G(i-1)*G(n-i)种可能。

列出状态转移方程:
G ( n ) = G ( 0 ) ∗ G ( n − 1 ) + G ( 1 ) ∗ G ( n − 2 ) + G ( 2 ) ∗ G ( n − 3 ) + .

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值