96_Unique Binary Search Trees
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
给定从1~n的数组,求以这些数字能组成多少个二叉搜索树。
1~n,以第i个数为根,则二叉搜索树的数量为 N[1, i - 1] * N[i + 1, n] (1到i-1个数组成的二叉搜索树个数 * i+1到n个数组成的二叉搜索树的个数)
该问题就成为了一个动态规划的问题。
设f(i) 为N个数字二叉搜索树的个数。
f(0) = 1;
f(1) = f(0) * f(0) = 1; (左右都是有0个数的二叉搜索树个数)
f(2) = f(0) * f(1) + (1为根)
f(1) * f(0) = 2; (2为根)
f(3) = f(0) * f(2) + (1为根)
f(1) * f(1) + (2为根)
f(2) * f(0) = 5; (3为根)
……
f(n) = f(0) * f(n-1) + (1为根)
f(1) * f(n-2) + (2位根)
……
f(n-1) * f(0) (n为根)
int numTrees(int n) { int result = 0; if(n == 0) { return 1; } if(n == 1) { return 1; } for(int i = 0; i < n; i++) { result += numTrees(i) * numTrees(n - i - 1); } return result; }
用递归,效率低,超时
以上是关于96_Unique Binary Search Trees的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 96. Unique Binary Search Trees
96. Unique Binary Search Trees
LeetCode96_Unique Binary Search Trees(求1到n这些节点能够组成多少种不同的二叉查找树) Java题解
#Leetcode# 96. Unique Binary Search Trees