精品欧美一区二区三区在线观看 _久久久久国色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)

91在线视频在线观看| 国产伦精品一区二区三区88av| 韩国三级av在线免费观看| 日本亚洲欧美天堂免费| 久久香蕉国产线看观看av| 精品人妻一区二区免费| 综合在线影院| 一区二区三区高清在线| 欧美日韩亚洲一区二区三区在线观看 | 在线免费黄色网| 国产三级电影在线播放| 国产精品系列在线| 国内精品视频在线播放| 在线观看亚洲一区二区| 亚洲激情影院| 久久亚洲精品成人| 亚洲一区二区三区日韩| 盗摄系列偷拍视频精品tp| 在线观看视频一区二区| 黄色大片中文字幕| 麻豆最新免费在线视频| 久久九九久久九九| 国产伦精品一区二区三区视频免费 | 日韩成人久久久| www.成人黄色| 国产精品字幕| 午夜精品aaa| 91网站在线观看免费| jyzzz在线观看视频| 99久久久国产精品免费蜜臀| 91亚洲永久免费精品| 成人h动漫精品一区二区下载| 亚洲私拍自拍| 精品中文字幕在线2019| 人妻互换一区二区激情偷拍| 久久99国产精品视频| 亚洲精品久久久久久久久久久久 | 国产精品国产对白熟妇| 蜜桃视频网站在线观看| 国产精品美女久久久久久久久 | 国产精品久久久久久亚洲影视| 欧美三级韩国三级日本三斤在线观看| 欧美69wwwcom| 九九精品视频在线| 欧美黄色aaa| 亚洲第一天堂| 久久伊人精品一区二区三区| 中文天堂资源在线| 成人影院天天5g天天爽无毒影院 | 九义人在线观看完整免费版电视剧| 久久精品一区四区| 欧美日产一区二区三区在线观看| 天天干天天操av| 97超碰欧美中文字幕| 久久久国产精品一区二区三区| 日韩中文字幕影院| caoporn国产一区二区| 国产伦精品一区二区三区免费视频 | 日韩成人毛片视频| 午夜精品国产| 久久免费国产视频| 午夜毛片在线观看| 亚洲区第一页| 日本午夜精品理论片a级appf发布| 在线观看免费av片| 免费成人在线影院| 91精品在线一区| 亚洲美女福利视频| 97久久精品人人做人人爽50路| 久久av一区二区三区漫画| 日本私人网站在线观看| 国产女人18毛片水真多成人如厕| 亚洲精品一卡二卡三卡四卡| 欧洲美女少妇精品| 一区二区高清在线| 看av免费毛片手机播放| www.一区| 欧美一二三区在线观看| 欧美肉大捧一进一出免费视频| 天海翼亚洲一区二区三区| 亚洲天堂视频在线观看| 国产一区二区精彩视频| 亚洲激情网址| 国产欧美日韩免费看aⅴ视频| 国产伦理吴梦梦伦理| 成人福利视频网站| 先锋影音亚洲资源| 日韩特级毛片| 色猫猫国产区一区二在线视频| gogogo高清免费观看在线视频| 亚洲国产aⅴ精品一区二区| 亚洲精品国精品久久99热一| av永久免费观看| 黄色国产精品| 国产精品久久久久久久久久久久久久| 99视频在线观看免费| 99久久综合国产精品| 亚洲欧美日产图| 操喷在线视频| 7777精品伊人久久久大香线蕉超级流畅| 亚洲成人精品在线播放| 国产一区二区三区探花| 欧美大片在线免费观看| 国产精品传媒在线观看| 成人福利电影精品一区二区在线观看| 亚洲精品影院| 日韩精品av| 日韩欧美中文字幕精品| 国内精品卡一卡二卡三| 在线高清一区| 91亚洲精品视频| 超碰国产在线观看| 午夜精品影院在线观看| 亚洲18在线看污www麻豆| 无码日韩精品一区二区免费| 久久影院资源网| 午夜视频网站在线观看| 久久亚洲二区三区| 欧美一级爱爱视频| **国产精品| 色777狠狠综合秋免鲁丝| 西西44rtwww国产精品| 国产高清不卡一区| 色中文字幕在线观看| 国产麻豆久久| 亚洲三级av在线| 久久午夜免费视频| 成人avav影音| 青青青青在线视频| 亚洲1区在线| 欧美成人免费播放| 97人妻人人澡人人爽人人精品| 久久男人中文字幕资源站| 国产v片免费观看| 亚洲国产高清在线观看| 久久精品这里热有精品| 中文字幕一区2区3区| 国产日产欧美一区二区三区 | 久久国产美女视频| 久久国产精品99久久久久久老狼| 日韩精品最新在线观看| av高清不卡| 亚洲色图美腿丝袜| 国产视频1区2区| 久久久久高清精品| 欧美伦理视频在线观看| 国产精品密蕾丝视频下载| 国产91精品在线播放| 日本中文字幕电影在线观看| 精品成人在线视频| www.久久国产| 久久香蕉精品| 亚洲一区二区四区| 在线欧美激情| 欧美高跟鞋交xxxxxhd| www.日韩高清| 激情av一区二区| 91精品人妻一区二区| 天堂av在线一区| 亚洲精品一卡二卡三卡四卡| av在线国产精品| 欧美激情xxxx性bbbb| 成人午夜免费福利| 懂色av中文一区二区三区天美| 亚洲国产无码精品| 日本va欧美va精品| 亚洲欧美日韩不卡| 国产美女撒尿一区二区| 欧美亚洲一级片| www.视频在线.com| 日韩一区二区三区免费观看| 久久中文字幕在线观看| 久久久五月婷婷| 在线观看免费视频高清游戏推荐| 亚洲精品二区三区| 国产一区二区久久久| 日韩欧美精品电影| 精品国产一区二区三区久久久狼| 亚洲AV无码精品自拍| 精品久久久久久亚洲国产300| 国产美女免费网站| 国产一区二区电影| 日本a级片免费观看| 日韩欧美自拍| 国产一区免费在线| 成人在线视频免费看| 欧美国产中文字幕| 九色国产在线观看| 欧美一区二区三区在| 韩国av免费观看| 中文字幕在线免费不卡| 中文字幕无码人妻少妇免费| 免费人成精品欧美精品| 每日在线观看av| 日韩一区二区中文| 国产乱人伦精品一区二区| 欧美韩国日本| 97久久精品人人澡人人爽缅北| 日韩在线资源| 亚洲成人av片| 国产精品伦理一区| 色综合久久88色综合天天6| 久草视频手机在线| 国产欧美久久久精品影院| 波多野结衣办公室双飞| 日本va欧美va欧美va精品| 国产中文字幕二区| 一区二区蜜桃| 亚洲 日韩 国产第一区| 色婷婷久久久| 97国产超碰| 久久久加勒比| 日韩av免费在线看| 成年女人在线看片| 欧美另类精品xxxx孕妇| av资源种子在线观看| 日韩精品视频免费专区在线播放| a天堂在线视频| 欧美日韩国产色站一区二区三区| 探花视频在线观看| 亚洲成在线观看| 日韩欧美中文字幕视频| 欧美国产成人在线| 成人免费毛片糖心| 91麻豆国产精品久久| 一区二区三区四区影院| 国产乱码精品一区二区三区av| 99热手机在线| 日韩二区在线观看| 国产自偷自偷免费一区| 亚洲永久网站| 中国丰满人妻videoshd| 国产精品观看| 国产精品久久久久久久久电影网| 亚洲国产日韩欧美在线| 综合久久国产| 久久久久国产| 黄色网址在线免费看| 国产精品福利在线观看播放| 天堂av一区二区| 欧美裸体在线版观看完整版| 欧美一区二区在线视频观看| 亚洲福利天堂| 日本一区高清在线视频| 久久99高清| 视频一区国产精品| 久久精品国产68国产精品亚洲| 性欧美大战久久久久久久免费观看 | 亚洲精品一区二区三区影院| 成人免费视频国产| 亚洲精品国产拍免费91在线| 无码国产精品一区二区色情男同| 日韩国产欧美区| 久久久资源网| 最近更新的2019中文字幕| 嫩草香蕉在线91一二三区| 久久久精品国产| 性国产高清在线观看| 久久久久久国产三级电影| sm久久捆绑调教精品一区| 热99久久精品| 日韩国产91| 超碰97人人人人人蜜桃| 欧美黑白配在线| 欧美日韩在线一区二区三区| 区一区二视频| 亚洲av综合色区| 国产精品一二| xxx国产在线观看| 国产毛片精品视频| 这里只有精品在线观看视频 | 日产精品一区| 成人午夜激情网| 粉嫩久久久久久久极品| 欧美黑人xxxxx| 99久久久国产精品美女| 欧美在线观看黄| 天堂久久一区二区三区| 五月激情五月婷婷| 不卡一区中文字幕| 欧美精品日韩在线| 亚洲一线二线三线久久久| 在线精品免费视| 制服丝袜激情欧洲亚洲| 午夜av免费观看| 日韩资源在线观看| 性国裸体高清亚洲| 国产在线精品自拍| 欧美a一欧美| 在线免费一区| 国产模特精品视频久久久久| 污污的网站免费| 2022国产精品视频| 欧美在线视频第一页| 欧美日韩在线另类| www.国产黄色| 深夜精品寂寞黄网站在线观看| av2020不卡| 92看片淫黄大片看国产片| 五月综合久久| 国产91在线亚洲| 美腿丝袜亚洲综合| 天堂久久久久久| 亚洲男人的天堂网| 国产主播第一页| 亚洲高清不卡av| 在线视频国产区| 国产精品色视频| 亚洲桃色综合影院| 久草视频这里只有精品| 久久爱www久久做| 素人fc2av清纯18岁| 一区二区三区免费在线观看| 中文字幕在线2019| 亚洲精品视频网上网址在线观看| 污污的网站在线看| 成人在线观看视频网站| 欧美日韩一二| 无码人妻h动漫| 99久久精品情趣| 日本三级理论片| 日韩三级高清在线| 国产黄色小视频在线| 国产欧美精品xxxx另类| 精品久久久久久久久久久下田| 男人添女人下面高潮视频| 国产大陆a不卡| 欧美偷拍第一页| 91精品国产美女浴室洗澡无遮挡| jizz在线观看视频| 国产999精品久久久影片官网| 欧美一级二级三级视频| 国产精品69久久久| 成人动漫视频在线| 国产一级在线播放| 亚洲精品一区二区三区香蕉| 污污的网站在线看| 国产福利久久精品| 欧美日韩国产免费观看 | 精人妻无码一区二区三区| 亚洲精品国精品久久99热| 成人免费网站观看| 久久riav二区三区| 久久精品动漫| 免费黄色片网站| 欧美色精品在线视频| jizzjizz在线观看| 成人免费视频97| 牛牛国产精品| 欧美xxxxx少妇| 欧美日韩国产一区中文午夜| 欧美777四色影视在线| 日本中文字幕久久看| 成人av资源电影网站| 一区二区三区网址| 亚洲特黄一级片| 亚洲av无码片一区二区三区| 欧美黄色片在线观看| 久本草在线中文字幕亚洲| 国产成人精品视频免费看| 久久精品免视看| 亚洲天堂国产精品| 久久99国产精品自在自在app | 姬川优奈av一区二区在线电影| 日韩中文一区| 精品一区二区三区在线视频| 国产精品成人免费观看| 亚洲国产精品成人av| 欧美电影网址| 中文精品一区二区三区 | 欧美精品久久99久久在免费线 | 黄色网页网址在线免费| 不卡一区二区三区视频| 乱码第一页成人| 亚洲AV成人无码精电影在线| 精品黑人一区二区三区久久 | 精品91在线| 伊人网在线视频观看| 91精品国产全国免费观看| 香蕉伊大人中文在线观看| 亚洲国产一区二区三区在线播| 国产一区二区精品久久91| 日韩一区二区视频在线| 色偷偷偷亚洲综合网另类 | 日韩av在线免播放器| 国产a亚洲精品| 精品少妇在线视频| 国产精品久久久久久久岛一牛影视| 国产黄色av网站| 国产91在线播放| 国产精品a久久久久| 在线观看日本中文字幕| 日韩欧美国产午夜精品| 亚洲欧美一区二区三区| 福利在线小视频| 欧美激情中文不卡| 五月婷在线视频| 99热99热| 久久99精品久久久久久久久久久久 | 香蕉视频在线免费看|