Unique Binary Search Trees
Last updated
Was this helpful?
Last updated
Was this helpful?
Given n, how many structurally unique BST's (binary search trees) that store values 1...n?
不会做。看到
让G(n)表示长度为n的数列能形成的unique binary tree的数目,注意这里的G不仅代表了[1, ..., n], 而是任意[i, ...., i+ n-1]的能组成的数目。因为[1, ..., n]组成的bst和[i,..., i+ n -1] 能构成的bst数目是一致的,认清这点 非常重要 。F(i, n)表示以i为root的前n个元素能形成的unique bin tree个数, 那么f[i][n] = G(i-1) * G(n-i), 分别对应了左子树和右子树可能的情况。又因为G(n) = f(1, n) + f(2, n) + ...+ f(n, n).
合并两个式子能得到G(n) = G(0) * G(n-1) + G(1) * G(n-2) ... + G(n-1)*G(0).
时间复杂度为O(n^2).