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

Leetcode 96. Unique Binary Search Trees

Leetcode 96. Unique Binary Search Trees