LeetCode 96 Unique Binary Search Trees

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.

再次感覺智商被碾壓斥滤。缤灵。。第一感覺就是需要找規(guī)律,往dp的方向靠毁靶。。幕与。然而并沒有看出什么規(guī)律速兔。。淤齐。

一定要牢記BST的一個(gè)重要特性9赡摇!更啄!

中序遍歷BST稚疹,實(shí)際得到的是一個(gè)sorted array!<牢瘛内狗!

OK,那如何利用這個(gè)特性得到解呢义锥?

對(duì)于包含1,2,...,n這n個(gè)數(shù)的所有BST而言柳沙,都可以分成root為1或root為2或...root為n,這n種情況拌倍。

可以表示為:

  • G(n): the number of unique BST for a sequence of length n.
  • F(i, n), 1 <= i <= n: the number of unique BST, where the number i is the root of BST, and the sequence ranges from 1 to n.
  • G(n) = F(1, n) + F(2, n) + ... + F(n, n).

我們最后需要求的是G(n)赂鲤,但為了求G(n),我們需要求解當(dāng)root為i時(shí)柱恤,可能有多少unique BST数初,也就是需要先求F(i, n)。

下面進(jìn)入關(guān)鍵的一步梗顺,讓我們來分析一下F(i, n)的求解:
假設(shè)n=7,i=3泡孩,所有unique BST中序遍歷后都會(huì)得到[1,2,3,4,5,6,7]。
考慮以3為root的所有BST寺谤,一共有多少種可能呢仑鸥?
我們先看左子樹,此時(shí)對(duì)應(yīng)[1,2]矗漾,有G(2)種樹的形式锈候。
再看右子樹,此時(shí)對(duì)應(yīng)[4,5,6,7]敞贡,由于同樣是一個(gè)遞增數(shù)列泵琳,樹的不同形式與[1,2,3,4]實(shí)際上是相同的,所以總共有G(4)種形式。

已知左右各有G(2)與G(4)種可能获列,那簡單的乘法原理就可以知道谷市,對(duì)應(yīng)root=3的BST一共有G(2)*G(4)種可能!;骱ⅰ迫悠!

也就是:

  • F(i, n) = G(i-1) * G(n-i) 1 <= i <= n

進(jìn)一步,可以求得G(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) {
        if (n <= 0) return 1;
        int[] dp = new int[n+1];
        dp[0] = 1;
        dp[1] = 1;
        
        for (int i = 2; i <= n; i++) {
            for (int j = 0; j < i; j++) {
                dp[i] += dp[j] * dp[i-1-j];
            }
        }
        return dp[n];
    }
}

參考:

https://discuss.leetcode.com/topic/8398/dp-solution-in-6-lines-with-explanation-f-i-n-g-i-1-g-n-i/2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末巩梢,一起剝皮案震驚了整個(gè)濱河市创泄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌括蝠,老刑警劉巖鞠抑,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異忌警,居然都是意外死亡搁拙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門法绵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來箕速,“玉大人,你說我怎么就攤上這事朋譬⊙尉ィ” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵此熬,是天一觀的道長庭呜。 經(jīng)常有香客問我滑进,道長犀忱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任扶关,我火速辦了婚禮阴汇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘节槐。我一直安慰自己搀庶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布铜异。 她就那樣靜靜地躺著哥倔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪揍庄。 梳的紋絲不亂的頭發(fā)上咆蒿,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼沃测。 笑死缭黔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蒂破。 我是一名探鬼主播馏谨,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼附迷!你這毒婦竟也來了惧互?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤喇伯,失蹤者是張志新(化名)和其女友劉穎壹哺,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艘刚,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡管宵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了攀甚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箩朴。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖秋度,靈堂內(nèi)的尸體忽然破棺而出炸庞,到底是詐尸還是另有隱情,我是刑警寧澤荚斯,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布埠居,位于F島的核電站,受9級(jí)特大地震影響事期,放射性物質(zhì)發(fā)生泄漏滥壕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一兽泣、第九天 我趴在偏房一處隱蔽的房頂上張望绎橘。 院中可真熱鬧,春花似錦唠倦、人聲如沸称鳞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冈止。三九已至,卻和暖如春候齿,著一層夾襖步出監(jiān)牢的瞬間熙暴,已是汗流浹背苫亦。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怨咪,地道東北人屋剑。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像诗眨,于是被迫代替她去往敵國和親唉匾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 給出n個(gè)數(shù)字匠楚,能夠構(gòu)建出多少個(gè)不同的bst巍膘。這道題可以用動(dòng)態(tài)規(guī)劃來做。那么動(dòng)態(tài)規(guī)劃重要的是找出狀態(tài)芋簿,以及狀態(tài)轉(zhuǎn)移方...
    單倍體閱讀 910評(píng)論 1 0
  • Given n, how many structurally unique BST's (binary searc...
    葉孤陳閱讀 443評(píng)論 0 0
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)峡懈。 張土汪:刷leetcod...
    土汪閱讀 12,747評(píng)論 0 33
  • Given n, how many structurally unique BST's (binary searc...
    ShutLove閱讀 207評(píng)論 0 0
  • 亂世中的神探 ——讀王小槍《醫(yī)探》 對(duì)于熟悉王小槍的讀者來說,他的文字一貫真實(shí)穩(wěn)重与斤,冷靜自持肪康。一如他的人,不喧囂撩穿,...
    燕子簫閱讀 275評(píng)論 0 0