精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

DP入門之不同的二叉搜索樹!

開發(fā) 前端
關(guān)于什么是二叉搜索樹,我們之前在講解二叉樹專題的時(shí)候已經(jīng)詳細(xì)講解過了,也可以看看這篇二叉樹:二叉搜索樹登場(chǎng)!再回顧一波。

不同的二叉搜索樹

題目鏈接:https://leetcode-cn.com/problems/unique-binary-search-trees

給定一個(gè)整數(shù) n,求以 1 ... n 為節(jié)點(diǎn)組成的二叉搜索樹有多少種?

示例:

思路

這道題目描述很簡短,但估計(jì)大部分同學(xué)看完都是懵懵的狀態(tài),這得怎么統(tǒng)計(jì)呢?

關(guān)于什么是二叉搜索樹,我們之前在講解二叉樹專題的時(shí)候已經(jīng)詳細(xì)講解過了,也可以看看這篇二叉樹:二叉搜索樹登場(chǎng)!再回顧一波。

了解了二叉搜索樹之后,我們應(yīng)該先舉幾個(gè)例子,畫畫圖,看看有沒有什么規(guī)律,如圖:

不同的二叉搜索樹

n為1的時(shí)候有一棵樹,n為2有兩棵樹,這個(gè)是很直觀的。

不同的二叉搜索樹1

來看看n為3的時(shí)候,有哪幾種情況。

當(dāng)1為頭結(jié)點(diǎn)的時(shí)候,其右子樹有兩個(gè)節(jié)點(diǎn),看這兩個(gè)節(jié)點(diǎn)的布局,是不是和 n 為2的時(shí)候兩棵樹的布局是一樣的啊!

(可能有同學(xué)問了,這布局不一樣啊,節(jié)點(diǎn)數(shù)值都不一樣。別忘了我們就是求不同樹的數(shù)量,并不用把搜索樹都列出來,所以不用關(guān)心其具體數(shù)值的差異)

當(dāng)3為頭結(jié)點(diǎn)的時(shí)候,其左子樹有兩個(gè)節(jié)點(diǎn),看這兩個(gè)節(jié)點(diǎn)的布局,是不是和n為2的時(shí)候兩棵樹的布局也是一樣的啊!

當(dāng)2為頭結(jié)點(diǎn)的時(shí)候,其左右子樹都只有一個(gè)節(jié)點(diǎn),布局是不是和n為1的時(shí)候只有一棵樹的布局也是一樣的啊!

發(fā)現(xiàn)到這里,其實(shí)我們就找到了重疊子問題了,其實(shí)也就是發(fā)現(xiàn)可以通過dp[1] 和 dp[2] 來推導(dǎo)出來dp[3]的某種方式。

思考到這里,這道題目就有眉目了。

dp[3],就是 元素1為頭結(jié)點(diǎn)搜索樹的數(shù)量 + 元素2為頭結(jié)點(diǎn)搜索樹的數(shù)量 + 元素3為頭結(jié)點(diǎn)搜索樹的數(shù)量

元素1為頭結(jié)點(diǎn)搜索樹的數(shù)量 = 右子樹有2個(gè)元素的搜索樹數(shù)量 * 左子樹有0個(gè)元素的搜索樹數(shù)量

元素2為頭結(jié)點(diǎn)搜索樹的數(shù)量 = 右子樹有1個(gè)元素的搜索樹數(shù)量 * 左子樹有1個(gè)元素的搜索樹數(shù)量

元素3為頭結(jié)點(diǎn)搜索樹的數(shù)量 = 右子樹有0個(gè)元素的搜索樹數(shù)量 * 左子樹有2個(gè)元素的搜索樹數(shù)量

有2個(gè)元素的搜索樹數(shù)量就是dp[2]。

有1個(gè)元素的搜索樹數(shù)量就是dp[1]。

有0個(gè)元素的搜索樹數(shù)量就是dp[0]。

所以dp[3] = dp[2] * dp[0] + dp[1] * dp[1] + dp[0] * dp[2]

如圖所示:

不同的二叉搜索樹2

此時(shí)我們已經(jīng)找到遞推關(guān)系了,那么可以用動(dòng)規(guī)五部曲再系統(tǒng)分析一遍。

1.確定dp數(shù)組(dp table)以及下標(biāo)的含義

dp[i] :1到i為節(jié)點(diǎn)組成的二叉搜索樹的個(gè)數(shù)為dp[i]。

也可以理解是i的不同元素節(jié)點(diǎn)組成的二叉搜索樹的個(gè)數(shù)為dp[i] ,都是一樣的。

以下分析如果想不清楚,就來回想一下dp[i]的定義

2.確定遞推公式

在上面的分析中,其實(shí)已經(jīng)看出其遞推關(guān)系, dp[i] += dp[以j為頭結(jié)點(diǎn)左子樹節(jié)點(diǎn)數(shù)量] * dp[以j為頭結(jié)點(diǎn)右子樹節(jié)點(diǎn)數(shù)量]

j相當(dāng)于是頭結(jié)點(diǎn)的元素,從1遍歷到i為止。

所以遞推公式:dp[i] += dp[j - 1] * dp[i - j]; ,j-1 為j為頭結(jié)點(diǎn)左子樹節(jié)點(diǎn)數(shù)量,i-j 為以j為頭結(jié)點(diǎn)右子樹節(jié)點(diǎn)數(shù)量

3.dp數(shù)組如何初始化

初始化,只需要初始化dp[0]就可以了,推導(dǎo)的基礎(chǔ),都是dp[0]。

那么dp[0]應(yīng)該是多少呢?

從定義上來講,空節(jié)點(diǎn)也是一棵二叉樹,也是一棵二叉搜索樹,這是可以說得通的。

從遞歸公式上來講,dp[以j為頭結(jié)點(diǎn)左子樹節(jié)點(diǎn)數(shù)量] * dp[以j為頭結(jié)點(diǎn)右子樹節(jié)點(diǎn)數(shù)量] 中以j為頭結(jié)點(diǎn)左子樹節(jié)點(diǎn)數(shù)量為0,也需要dp[以j為頭結(jié)點(diǎn)左子樹節(jié)點(diǎn)數(shù)量] = 1, 否則乘法的結(jié)果就都變成0了。

所以初始化dp[0] = 1

4.確定遍歷順序

首先一定是遍歷節(jié)點(diǎn)數(shù),從遞歸公式:dp[i] += dp[j - 1] * dp[i - j]可以看出,節(jié)點(diǎn)數(shù)為i的狀態(tài)是依靠 i之前節(jié)點(diǎn)數(shù)的狀態(tài)。

那么遍歷i里面每一個(gè)數(shù)作為頭結(jié)點(diǎn)的狀態(tài),用j來遍歷。

代碼如下:

  1. for (int i = 1; i <= n; i++) { 
  2.     for (int j = 1; j <= i; j++) { 
  3.         dp[i] += dp[j - 1] * dp[i - j]; 
  4.     } 

5.舉例推導(dǎo)dp數(shù)組

n為5時(shí)候的dp數(shù)組狀態(tài)如圖:

不同的二叉搜索樹3

當(dāng)然如果自己畫圖舉例的話,基本舉例到n為3就可以了,n為4的時(shí)候,畫圖已經(jīng)比較麻煩了。

我這里列到了n為5的情況,是為了方便大家 debug代碼的時(shí)候,把dp數(shù)組打出來,看看哪里有問題。

綜上分析完畢,C++代碼如下:

  1. class Solution { 
  2. public
  3.     int numTrees(int n) { 
  4.         vector<int> dp(n + 1); 
  5.         dp[0] = 1; 
  6.         for (int i = 1; i <= n; i++) { 
  7.             for (int j = 1; j <= i; j++) { 
  8.                 dp[i] += dp[j - 1] * dp[i - j]; 
  9.             } 
  10.         } 
  11.         return dp[n]; 
  12.     } 
  13. }; 
  • 時(shí)間復(fù)雜度:
  • 空間復(fù)雜度:

大家應(yīng)該發(fā)現(xiàn)了,我們分析了這么多,最后代碼卻如此簡單!

總結(jié)

這道題目雖然在力扣上標(biāo)記是中等難度,但可以算是困難了!

首先這道題想到用動(dòng)規(guī)的方法來解決,就不太好想,需要舉例,畫圖,分析,才能找到遞推的關(guān)系。

然后難點(diǎn)就是確定遞推公式了,如果把遞推公式想清楚了,遍歷順序和初始化,就是自然而然的事情了。

可以看出我依然還是用動(dòng)規(guī)五部曲來進(jìn)行分析,會(huì)把題目的方方面面都覆蓋到!

而且具體這五部分析是我自己平時(shí)總結(jié)的經(jīng)驗(yàn),找不出來第二個(gè)的,可能過一陣子 其他題解也會(huì)有動(dòng)規(guī)五部曲了,哈哈。

當(dāng)時(shí)我在用動(dòng)規(guī)五部曲講解斐波那契的時(shí)候,一些錄友和我反應(yīng),感覺講復(fù)雜了。

其實(shí)當(dāng)時(shí)我一直強(qiáng)調(diào)簡單題是用來練習(xí)方法論的,并不能因?yàn)楹唵挝揖痛a一甩,簡單解釋一下就完事了。

可能當(dāng)時(shí)一些同學(xué)不理解,現(xiàn)在大家應(yīng)該感受方法論的重要性了,加油??

本文轉(zhuǎn)載自微信公眾號(hào)「代碼隨想錄」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系代碼隨想錄公眾號(hào)。

 

責(zé)任編輯:武曉燕 來源: 代碼隨想錄
相關(guān)推薦

2021-08-31 11:35:24

二叉搜索樹迭代法公共祖先

2022-12-26 00:51:33

雙向鏈表二叉搜索樹

2021-09-02 11:31:28

二叉搜索樹迭代法公共祖先

2021-09-03 08:58:00

二叉搜索樹節(jié)點(diǎn)

2021-10-11 06:38:52

遞歸二叉搜索樹

2021-12-07 06:55:17

二叉搜索樹鏈表

2020-04-27 07:05:58

二叉樹左子樹右子樹

2024-01-17 07:36:50

二叉搜索聯(lián)系簿

2021-08-26 11:31:11

二叉樹數(shù)據(jù)結(jié)構(gòu)算法

2023-07-31 08:01:13

二叉搜索測(cè)試

2021-04-28 20:12:27

數(shù)據(jù)結(jié)構(gòu)創(chuàng)建

2021-03-22 08:23:29

LeetCode二叉樹節(jié)點(diǎn)

2021-09-07 11:01:41

二叉搜索樹序數(shù)組

2023-02-13 08:02:08

哈希函數(shù)哈希表搜索樹

2020-12-11 09:49:29

二叉樹搜索樹數(shù)據(jù)

2021-09-06 10:38:50

二叉搜索樹遞歸

2020-10-11 16:56:48

二叉搜索樹代碼開發(fā)

2021-04-06 08:20:24

二叉搜索樹數(shù)據(jù)結(jié)構(gòu)算法

2021-04-19 07:47:42

數(shù)據(jù)結(jié)構(gòu)二叉樹Tree

2021-04-20 08:37:14

數(shù)據(jù)結(jié)構(gòu)二叉樹
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

久久久久久久久久99| 成年网站免费在线观看| 日韩精品视频无播放器在线看| 国产日韩亚洲欧美精品| 亚洲视频在线看| 欧美美女一级片| 久草在线视频福利| 久久网站热最新地址| 国产精品最新在线观看| 国产亚洲精品成人| 日韩精品免费一区二区在线观看| 欧美一级生活片| 欧美日韩成人免费视频| a√资源在线| 成人av在线网站| 国产精品视频在线观看| 久久亚洲AV无码| 精品九九在线| 欧美xxxxxxxx| 天天干天天综合| 国内在线视频| 中文字幕一区二区三区视频| 精品福利影视| 91午夜交换视频| 国产视频一区欧美| 久久6精品影院| 日本二区在线观看| 超碰在线成人| 8x福利精品第一导航| 69堂免费视频| 激情图片在线观看高清国产| 中文字幕乱码亚洲精品一区| 国产视频精品网| 国产精品久久欧美久久一区| 日韩综合小视频| 午夜剧场成人观在线视频免费观看| 北条麻妃在线观看视频| 91久久爱成人| 国产人妖一区二区| 奇米777欧美一区二区| 66m—66摸成人免费视频| 91视频最新网址| 国产乱码精品一区二区亚洲| 亚洲精品成人免费| 激情综合激情五月| 日韩精品三级| 欧美精品久久99久久在免费线| 任你操这里只有精品| 国产粉嫩在线观看| 亚洲超丰满肉感bbw| 成人高清dvd| 求av网址在线观看| 国产精品久久久久久久浪潮网站 | 中文字幕亚洲图片| 51妺嘿嘿午夜福利| 欧美日韩xxxx| 亚洲日本欧美中文幕| 一区二区三区少妇| 欧美偷窥清纯综合图区| 亚洲精品一线二线三线| 性高潮久久久久久| 综合激情久久| 精品美女被调教视频大全网站| 日本黄色一级网站| 日韩一区二区三区高清在线观看| 日韩一区和二区| 欧美激情第四页| 中文字幕一区日韩精品 | 四虎成人免费在线| 久久久久久久久免费| 青青草国产精品| eeuss影院www在线观看| 国产精品久久久久久久久免费樱桃| 日韩成人在线资源| 黄网址在线观看| 亚洲精品国产无天堂网2021| 人妻互换免费中文字幕| 久久99亚洲网美利坚合众国| 图片区小说区区亚洲影院| 国产肥臀一区二区福利视频| 亚洲成人看片| 欧美精品乱人伦久久久久久| 欧美人与性动交α欧美精品 | 久久影院理伦片| 可以在线观看的av| 国产精品麻豆网站| 嫩草影院中文字幕| 欧美电影免费观看| 91精品国产免费久久综合| 免费啪视频在线观看| 色爱综合av| 中文字幕亚洲综合久久| 久久精品黄色片| 一本久久知道综合久久| 国产91在线播放精品91| 亚洲资源在线播放| 成人免费毛片app| 日韩欧美在线观看强乱免费| 精品国产白色丝袜高跟鞋| 亚洲电影第三页| 国产一级特黄a大片免费| 国模大尺度视频一区二区| 亚洲大胆人体视频| 永久免费观看片现看| 在线观看日韩av电影| 国产精品久久久久999| www.精品视频| 国产欧美日韩精品a在线观看| 国产亚洲一区二区精品| 午夜精品久久久内射近拍高清| 欧美日韩免费观看视频| 91精品久久久久久久91蜜桃| 女性生殖扒开酷刑vk| 欧美日韩色图| 九九精品在线视频| 夜夜躁日日躁狠狠久久av| 国产精品一卡二| 欧美日韩一区在线播放| 91亚洲天堂| 色综合激情五月| wwwxx日本| 国产精品毛片一区二区在线看| 午夜精品久久久久久久久久久久久| 中文字幕一区二区三区四区视频| 波多野结衣中文一区| 一区二区三区偷拍| 吞精囗交69激情欧美| 精品少妇一区二区三区免费观看| 香蕉久久久久久久| 老鸭窝91久久精品色噜噜导演| 亚洲最大av在线| 天堂中文8资源在线8| 一本大道久久a久久精品综合| 久草视频福利在线| 亚洲最大av| 国产精品夜色7777狼人| 青青青草网站免费视频在线观看| 日本三级一区| 亚洲最新视频在线观看| 五月婷婷六月合| 猛男gaygay欧美视频| 国外成人性视频| www.爱爱.com| 亚洲欧美综合色| 中文字幕永久视频| 九九久久婷婷| 日本一本a高清免费不卡| 色呦呦中文字幕| 亚洲成人免费在线观看| 亚洲成人激情小说| 欧美日韩18| 147欧美人体大胆444| 美女写真理伦片在线看| 欧美日韩免费在线视频| 一级片久久久久| 日韩电影免费一区| 日韩性感在线| h片在线观看视频免费| 精品国产一区久久| 精品在线免费观看视频| 久久99国产精品麻豆| 天堂社区 天堂综合网 天堂资源最新版| 亚洲v.com| 亚洲视频在线播放| 这里只有精品免费视频| 国产三级一区二区三区| 日本激情视频在线| 日韩精品一区二区三区免费观影 | 999国产精品视频| 91日本视频在线| 亚洲wwwww| 亚洲精品720p| 无码人妻一区二区三区线| 国产喷白浆一区二区三区| 亚洲不卡视频在线| 久久国产精品亚洲人一区二区三区 | 亚洲精品视频网| 亚洲电影在线播放| 91久久免费视频| 亚洲天堂男人av| 国产精品综合在线视频| 激情五月六月婷婷| 日韩在线影视| 国产精品日韩专区| 中文在线观看免费| 亚洲国模精品一区| 久久久999久久久| 亚洲美女区一区| 50一60岁老妇女毛片| 久久精品成人| 樱空桃在线播放| 国产精品xxx在线观看| 国产不卡在线观看| 久久久久久久久免费视频| 亚洲国产成人精品久久久国产成人一区| 特黄视频免费看| 亚洲视频免费观看| 亚洲一区二区三区四区五区六区 | 一区二区三区免费播放| 欧美激情综合色综合啪啪| 久久精品日韩| 二区三区精品| 欧美在线视频免费播放| 黄色在线论坛| 亚洲人高潮女人毛茸茸| 国产99久一区二区三区a片 | 在线观看视频99| 精品黑人一区二区三区在线观看 | 日韩熟女精品一区二区三区| 日本一区二区视频在线| 永久免费未满蜜桃| 免费人成黄页网站在线一区二区| 日本人妻伦在线中文字幕| 国内精品久久久久久久久电影网| 99re国产| 久久天堂av| 97色伦亚洲国产| 精品视频在线一区二区| 国产视频精品久久久| 精品乱子伦一区二区| 欧美专区在线观看一区| 色网站在线播放| 亚洲自拍欧美精品| 俄罗斯毛片基地| 久久伊人中文字幕| 伊人久久一区二区三区| 国产福利一区二区三区视频在线| 欧美精品成人网| 亚洲深爱激情| 美女国内精品自产拍在线播放| 精品一区二区视频在线观看| 蜜桃伊人久久| 国产曰肥老太婆无遮挡| 亚洲最大av| 杨幂一区欧美专区| av中文一区| 老牛影视免费一区二区| 精品素人av| 国产精品入口免费| 77成人影视| av成人免费观看| 免费看日产一区二区三区 | 国产精品亚洲午夜一区二区三区| 亚洲少妇第一页| 久久国产精品毛片| 国内外成人免费激情视频| 尤物精品在线| 国产精品国产亚洲精品看不卡| 国产一区观看| av动漫在线播放| 综合视频在线| 成年在线观看视频| 国产精品草草| 野外做受又硬又粗又大视频√| 欧美激情成人在线| 妺妺窝人体色www看人体| 亚洲欧美一区在线| 人妻夜夜添夜夜无码av| 亚洲高清资源| 成人免费aaa| 久久精品国产清高在天天线| 日韩av在线综合| 日日摸夜夜添夜夜添精品视频| 十八禁视频网站在线观看| 日韩二区在线观看| 777一区二区| 国产成人午夜高潮毛片| 影音先锋资源av| 99免费精品在线观看| 成人免费看aa片| 国产精品女同一区二区三区| 色婷婷粉嫩av| 亚洲在线观看免费| 毛片在线免费视频| 欧美性生活一区| 国产女人高潮的av毛片| 精品剧情v国产在线观看在线| 视频污在线观看| 亚洲色图13p| 国产婷婷视频在线| 亚州欧美日韩中文视频| 成人亚洲欧美| 成人免费在线视频网址| 91久久精品无嫩草影院 | 亚洲黄色在线观看视频| 日韩av在线直播| 国产精品天堂| 九九热在线视频观看这里只有精品| 日本不卡在线观看| 小小影院久久| 精品少妇人欧美激情在线观看| 日韩午夜免费视频| 亚洲这里只有精品| 成人av在线资源| jizz日本在线播放| 亚洲香肠在线观看| 国产美女www| 日韩免费视频一区| 黄色av网址在线免费观看| 久久精品国产96久久久香蕉| 日本乱码一区二区三区不卡| 成人美女免费网站视频| 日韩有码一区| 97在线免费视频观看| 视频在线观看91| 久草免费资源站| 国产精品萝li| 日韩成人免费观看| 欧美精品一卡两卡| 青青草视频免费在线观看| 日韩中文在线中文网三级| 日韩伦理在线一区| 91精品久久香蕉国产线看观看| 精品久久电影| 亚洲中文字幕无码专区| 国产精品亚洲人在线观看| 香蕉久久久久久久| 日本道免费精品一区二区三区| 亚洲经典一区二区三区| 日韩在线欧美在线| 成人欧美一区二区三区的电影| 成人一区二区三区四区| 国产精品国内免费一区二区三区| 成年人免费在线播放| 成人在线视频首页| 日韩在线观看视频一区二区| 欧美性受极品xxxx喷水| 毛片免费在线播放| 国外成人性视频| 大奶在线精品| 国产免费xxx| 加勒比av一区二区| 国产1区2区在线观看| 日韩欧美成人区| 特黄aaaaaaaaa真人毛片| 色中色综合影院手机版在线观看| 久久亚洲资源中文字| 日本三级中国三级99人妇网站| 日韩视频一区二区三区在线播放免费观看| 图片区乱熟图片区亚洲| 中文字幕乱码久久午夜不卡 | 亚洲成av人片在线| 国产高清视频免费| 久久伊人精品天天| 999精品嫩草久久久久久99| 亚洲精品一区二区三区蜜桃久| 丝袜美腿一区二区三区| 中文字幕免费看| 日韩欧美国产黄色| 美女做暖暖视频免费在线观看全部网址91| 国产69精品久久久| 美女福利一区| 人妻熟妇乱又伦精品视频| 97国产一区二区| 久久久久久久久久久影院| 亚洲美女自拍视频| ww久久综合久中文字幕| 性刺激综合网| 精品在线免费视频| 男人晚上看的视频| 日韩一卡二卡三卡四卡| 538任你躁在线精品免费| 成人a免费在线看| 日韩 欧美 综合| 亚洲欧美色婷婷| 国模私拍国内精品国内av| 制服诱惑一区| 国产成人综合自拍| 国产精品第一页在线观看| 亚洲国产日韩欧美综合久久 | 国产成人在线一区二区| av亚洲免费| 中文字幕资源在线观看| 成人欧美一区二区三区黑人麻豆| a级片在线视频| 欧美大秀在线观看| 亚洲婷婷丁香| 日韩大片一区二区| 亚洲精品国产精品乱码不99| 亚洲精品国产精品乱码不卡| 97精品久久久| 欧美一级精品片在线看| 黄色三级视频在线播放| 亚洲午夜视频在线观看| 免费播放片a高清在线观看| 国产在线观看一区二区三区 | 久久天天做天天爱综合色| 一级片免费在线播放| 超碰91人人草人人干| 美国成人xxx| 伊人成人222| 午夜私人影院久久久久| 成人高清免费观看mv| 97久草视频| 日韩精品每日更新| 欧美日韩国产精品一区二区三区| 精品一区电影国产| 精品国产亚洲一区二区三区大结局| 国产精品333| 亚洲女性喷水在线观看一区|