最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Leetcode 刷題Day2(4)

2022-04-02 16:01 作者:我喜歡喝一點(diǎn)點(diǎn)  | 我要投稿

輸入某二叉樹(shù)的前序遍歷和中序遍歷的結(jié)果,請(qǐng)構(gòu)建該二叉樹(shù)并返回其根節(jié)點(diǎn)。

假設(shè)輸入的前序遍歷和中序遍歷的結(jié)果中都不含重復(fù)的數(shù)字。

最主要的就是找到確定遞歸的左右邊界~

不過(guò)我感覺(jué)preorder=preorder這一步的意義還是不太理解。

另外,字典特別容易和數(shù)組混啊,如果能用map解決就更直觀點(diǎn)了。


#前序遍歷?按照根節(jié)點(diǎn)|左節(jié)點(diǎn)|右節(jié)點(diǎn)進(jìn)行遍歷

#中序遍歷?按照左節(jié)點(diǎn)|根節(jié)點(diǎn)|右節(jié)點(diǎn)進(jìn)行遍歷

#1.前序遍歷的第一個(gè)元素為樹(shù)的根節(jié)點(diǎn)

#2.中序遍歷中,可根據(jù)找到的根節(jié)點(diǎn)劃分為[左子樹(shù)|根節(jié)點(diǎn)|右子樹(shù)]

#3.前序遍歷中,可根據(jù)中序遍歷中得到的左右子樹(shù)中節(jié)點(diǎn)的數(shù)量,劃分為[根節(jié)點(diǎn)|左子樹(shù)|右子樹(shù)]


#?例如:

#?preorder=[3,9,2,1,7]

#?inorder=[9,3,1,2,7]

#?得到3為樹(shù)的根節(jié)點(diǎn),所以9為左子樹(shù),2、1、7為右子樹(shù),2為右子樹(shù)的根節(jié)點(diǎn),因此1為右子樹(shù)的左子樹(shù),7為右子樹(shù)的右子樹(shù)


#?思路:

#?1.找到根節(jié)點(diǎn)preorder[root]

#?2.在inorder中找到對(duì)應(yīng)preorder[root]的索引i,i左側(cè)的為左子樹(shù),i右側(cè)的為右子樹(shù)

#?3.構(gòu)建左右子樹(shù):

#?左子樹(shù):根節(jié)點(diǎn)的索引?root+1(前序遍歷中左子樹(shù)在根節(jié)點(diǎn)右側(cè),左子樹(shù)的根節(jié)點(diǎn)又是第一個(gè))

#?中序遍歷的左邊界?left

#?中序遍歷的右邊界?i-1

#?右子樹(shù):根節(jié)點(diǎn)的索引?i+root-left+1(即根節(jié)點(diǎn)加上左子樹(shù)的長(zhǎng)度再加1)

#?中序遍歷的左邊界?i+1

#?中序遍歷的右邊界?right

#?當(dāng)left>right后,則已經(jīng)越過(guò)根節(jié)點(diǎn),退出。


#?Definition?for?a?binary?tree?node.

#?class?TreeNode:

#?????def?__init__(self,?x):

#?????????self.val?=?x

#?????????self.left?=?None

#?????????self.right?=?None


class?Solution:

????def?buildTree(self,?preorder:?List[int],?inorder:?List[int])?->?TreeNode:

????????def?solve(root,left,right):

????????????if?left>right:?return

????????????node=TreeNode(preorder[root])

????????????i=dic[preorder[root]]

????????????node.left=solve(root+1,left,i-1)

????????????node.right=solve(i+root-left+1,i+1,right)

????????????return?node

????????dic={}

????????preorder=preorder

????????for?i?in?range(len(inorder)):

????????????dic[inorder[i]]=i

????????????#將inorder中的每個(gè)值和位子放入字典成為鍵值對(duì),則可以根據(jù)preorder的值找到在inorder中的位置

????????return?solve(0,0,len(inorder)-1)


另外今天就摸到這里吧,?忍不住放個(gè)溫迪~


Leetcode 刷題Day2(4)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
海晏县| 普洱| 江门市| 科尔| 尼勒克县| 上高县| 桦南县| 合阳县| 广南县| 灵川县| 乃东县| 栖霞市| 临湘市| 京山县| 翁源县| 包头市| 凤台县| 昌吉市| 福清市| 福州市| 浙江省| 西丰县| 肥西县| 和平区| 湟源县| 金沙县| 伊宁县| 莱州市| 启东市| 鲜城| 汝阳县| 阿图什市| 吴桥县| 会东县| 西贡区| 吴堡县| 波密县| 山西省| 鄂温| 临高县| 洱源县|