Lintcode163 Unique Binary Search Trees solution 題解

【題目描述】

Given n, how many structurally unique BST s (binary search trees) that store values 1...n?

給出n,問由 1...n爲節點組成的不同的二叉查找樹有多少種?

【題目鏈接】

www.lintcode.com/en/problem/unique-binary-search-trees/

【題目解析】

設dp[i]表示共有i個節點時,能產生的BST樹的個數

n == 0 時,空樹的個數必然爲1,因此dp[0] = 1

n == 1 時,只有1這個根節點,數量也爲1,因此dp[1] = 1

n == 2時,有兩種構造方法,dp[2] = dp[0] * dp[1] + dp[1] * dp[0]

n == 3時,構造方法如題目給的示例所示,dp[3] = dp[0] * dp[2] + dp[1] * dp[1] + dp[2] * dp[0]

同時,當根節點元素爲 1, 2, 3, 4, 5, ..., i, ..., n時,基於以下原則的BST樹具有唯一性:

以i爲根節點時,其左子樹構成爲[0,...,i-1],其右子樹構成爲[i+1,...,n]構成

因此,dp[i] = sigma(dp[0...k] * dp[k+1...i]) 0 <= k < i - 1

【參考答案】

www.jiuzhang.com/solutions/unique-binary-search-trees/



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章