加载中...
96-不同的二叉搜索树(Unique Binary Search Trees)
发表于:2021-12-03 | 分类: 中等
字数统计: 147 | 阅读时长: 1分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/unique-binary-search-trees

英文原文

Given an integer n, return the number of structurally unique BST's (binary search trees) which has exactly n nodes of unique values from 1 to n.

 

Example 1:

Input: n = 3
Output: 5

Example 2:

Input: n = 1
Output: 1

 

Constraints:

  • 1 <= n <= 19

中文题目

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

 

示例 1:

输入:n = 3
输出:5

示例 2:

输入:n = 1
输出:1

 

提示:

  • 1 <= n <= 19

通过代码

高赞题解

解题思路

  • 标签:动态规划
  • 假设 n 个节点存在二叉排序树的个数是 G (n),令 f(i) 为以 i 为根的二叉搜索树的个数,则

$G(n) = f(1) + f(2) + f(3) + f(4) + … + f(n)$

  • 当 i 为根节点时,其左子树节点个数为 i-1 个,右子树节点为 n-i,则

$f(i) = G(i-1)*G(n-i)$

$G(n) = G(0)G(n-1)+G(1)(n-2)+…+G(n-1)*G(0)$

代码

[]
class Solution { public int numTrees(int n) { int[] dp = new int[n+1]; dp[0] = 1; dp[1] = 1; for(int i = 2; i < n + 1; i++) for(int j = 1; j < i + 1; j++) dp[i] += dp[j-1] * dp[i-j]; return dp[n]; } }

画解

<frame_00001.png,frame_00004.png,frame_00007.png,frame_00010.png,frame_00013.png,frame_00016.png,frame_00019.png>

想看大鹏画解更多高频面试题,欢迎阅读大鹏的 LeetBook:《画解剑指 Offer 》,O(∩_∩)O

统计信息

通过次数 提交次数 AC比率
179137 256186 69.9%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言

相似题目

题目 难度
不同的二叉搜索树 II 中等
上一篇:
95-不同的二叉搜索树 II(Unique Binary Search Trees II)
下一篇:
97-交错字符串(Interleaving String)
本文目录
本文目录