Java [Leetcode 96]Unique Binary Search Trees
Posted 王小二的小博
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java [Leetcode 96]Unique Binary Search Trees相关的知识,希望对你有一定的参考价值。
题目描述:
Given n, how many structurally unique BST‘s (binary search trees) that store values 1...n?
For example,
Given n = 3, there are a total of 5 unique BST‘s.
1 3 3 2 1 \ / / / \ 3 2 1 1 3 2 / / \ 2 1 2 3
解题思路:
动态规划法。
用G(n)表示长度为n组成的二叉搜索树的数目;
G(0) = 1, G(1) = 1
F(i,n)表示以i为根节点,长度为n组成的二叉搜索树的数目。
从而G(n) = F(1,n) + F(2,n) + ...+ F(n,n)
而F(i,n) = G(i - 1) * G(n - i) 1<=i <=n
从而G(n) = G(0) * G(n - 1) + G(1) * G(n - 2) + ... + G(n - 1) * G(0)
代码如下:
public class Solution{ public int numTrees(int n){ int[] res = new int[n + 1]; res[0] = res[1] = 1; for(int i = 2; i <= n; i++){ for(int j = 0; j <= i - 1; j++){ res[i] += res[j] * res[i - 1 - j]; } } return res[n]; } }
以上是关于Java [Leetcode 96]Unique Binary Search Trees的主要内容,如果未能解决你的问题,请参考以下文章
leetcode 96 Unique Binary Search Trees ----- java
LeetCode96_Unique Binary Search Trees(求1到n这些节点能够组成多少种不同的二叉查找树) Java题解
LeetCode-96. Unique Binary Search Trees
#Leetcode# 96. Unique Binary Search Trees