chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

面試算法之重建二叉樹(shù)

算法與數(shù)據(jù)結(jié)構(gòu) ? 來(lái)源:算法與數(shù)據(jù)結(jié)構(gòu) ? 2019-11-27 15:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

從今天開(kāi)始,公眾號(hào)陸陸續(xù)續(xù)開(kāi)始插寫(xiě)用動(dòng)畫(huà)形式展現(xiàn)算法題,如劍指offer、Leedcode里經(jīng)典面試題型,同時(shí)也會(huì)更新數(shù)據(jù)結(jié)構(gòu)與算法基礎(chǔ)、網(wǎng)絡(luò)原理等知識(shí)。

以為無(wú)論是面試還是實(shí)際項(xiàng)目,對(duì)算法的要求也非常的嚴(yán)格,所以小鹿盡最大努力把算法還原成動(dòng)畫(huà)形式來(lái)講解,爭(zhēng)取讓每個(gè)人都能看懂算法、學(xué)會(huì)算法。

1

題目

已知前序遍歷為{1,2,4,7,3,5,6,8},中序遍歷為{4,7,2,1,5,3,8,6},它的二叉樹(shù)是怎么樣的?

2

基礎(chǔ)鞏固

根據(jù)上述題目所述,我們已知前序遍歷和中序遍歷,回顧一下,什么是前序遍歷?什么是中序遍歷?

2.1 前序遍歷

前序遍歷一顆二叉樹(shù),首先輸出根節(jié)點(diǎn),然后輸出左子節(jié)點(diǎn),最后輸出右子節(jié)點(diǎn)。

比如,遍歷一下二叉樹(shù):

顏色變深表示遍歷,突出表示輸出

2.2 中序遍歷

中序遍歷一棵二叉樹(shù),首先輸出左子節(jié)點(diǎn),然后輸出輸出根節(jié)點(diǎn),最后右子節(jié)點(diǎn)。

以上邊二叉樹(shù)為例,通過(guò)中序遍歷輸出。

3

解題思路

既然我們知道了二叉樹(shù)如何進(jìn)行前序遍歷和中序遍歷了,那么已知前序遍歷和中序遍歷如何反推二叉樹(shù)呢?

那么問(wèn)題來(lái)了,只知道前序遍歷能不能反推二叉樹(shù)呢?我們就試一下,比如題目中所述,{1,2,4,7,3,5,6,8},根據(jù)前序遍歷,根、左、右,1 肯定是 根節(jié)點(diǎn),那么一下2,4,7.....哪些是左子節(jié)點(diǎn)呢?左子節(jié)點(diǎn)有幾個(gè)呢?很顯然我們是不知道的,由此可以得出,只知道前序遍歷是不可能反推出二叉樹(shù)的,中序遍歷也是如此,自己可以嘗試一下。

那么前序遍歷和中序遍歷可不可以?那我們要試一下,我們上邊通過(guò)前序遍歷找到第一個(gè)根節(jié)點(diǎn)就是 1,如圖

中序遍歷{4,7,2,1,5,3,8,6}的規(guī)律又是左、根、右,所以 1 結(jié)點(diǎn)在中序遍歷中為根,它的左邊就是所有左子節(jié)點(diǎn)4,7,2,右邊為所有的右子節(jié)點(diǎn)5,3,8,6。

此時(shí)我們已經(jīng)劃分左右子節(jié)點(diǎn)了,但是左邊的子節(jié)點(diǎn)中哪些又是根節(jié)點(diǎn)呢?我們?cè)倩氐角靶虮闅v中,根據(jù)前序遍歷的特點(diǎn),根、左、右,在從子節(jié)點(diǎn)進(jìn)行劃分,那么 1 結(jié)點(diǎn)中的子節(jié)點(diǎn)誰(shuí)為根節(jié)點(diǎn)呢?

我們一眼就能看出來(lái),就是 2 結(jié)點(diǎn),那么剩余的 4,7 左右結(jié)點(diǎn)怎么分呢?我們根據(jù)上述再回到中序遍歷,找到 2 根節(jié)點(diǎn),根據(jù)中序遍歷左、根、右的特點(diǎn),找到 2 結(jié)點(diǎn),那左邊的就是左子節(jié)點(diǎn),右邊的就是右子節(jié)點(diǎn),我們可以看到,左邊有兩個(gè)數(shù),正是 4 和 7 結(jié)點(diǎn)。

右邊只有 1 結(jié)點(diǎn),1 結(jié)點(diǎn)我們剛剛說(shuō)了,是根節(jié)點(diǎn),所以以 2 為根節(jié)點(diǎn)是沒(méi)有右子節(jié)點(diǎn)的,剩下的數(shù)字也是同樣的方式區(qū)分,自己可以試一下,動(dòng)手畫(huà)一畫(huà)。

我們仔細(xì)發(fā)現(xiàn),其實(shí)整個(gè)層層往下,以及左右,都是相同的解決方式,而且大問(wèn)題可以分解為小問(wèn)題,我們下意識(shí)就應(yīng)該想起小鹿之前分享過(guò)的知識(shí),那就是遞歸,既然是遞歸,就應(yīng)該有終止條件,終止條件就是當(dāng)子節(jié)點(diǎn)為空時(shí),此時(shí)遞歸結(jié)束。

4

測(cè)試用例

我們之前的文章強(qiáng)調(diào)過(guò),手寫(xiě)代碼之前,一定先把測(cè)試用例想好,為了能夠在手寫(xiě)代碼的時(shí)候考慮到邊界情況,還為了防止你到時(shí)候面試涂涂改改。

4.1 普通測(cè)試

完全二叉樹(shù)、非完全二叉樹(shù)。

4.2 特殊測(cè)試

只有左子節(jié)點(diǎn)二叉樹(shù),只有右子節(jié)點(diǎn)、只有一個(gè)結(jié)點(diǎn)的二叉樹(shù) —— 特殊二叉樹(shù)測(cè)試。

4.3 輸入測(cè)試

空樹(shù)、空指針null、前序和中序不匹配。

5

代碼實(shí)現(xiàn)

JavaScript 版本

Java 版本

C 語(yǔ)言版本

Python 版本

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4759

    瀏覽量

    97098
  • 二叉樹(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    12854

原文標(biāo)題:動(dòng)畫(huà):面試算法之重建二叉樹(shù)

文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    C語(yǔ)言的常見(jiàn)算法

    = next; } return prev; } ``` ### 二叉樹(shù)遍歷 (前序) ```c struct TreeNode { int val; struct TreeNode
    發(fā)表于 11-24 08:29

    通過(guò)優(yōu)化代碼來(lái)提高M(jìn)CU運(yùn)行效率

    選擇時(shí)間復(fù)雜度低的算法。 根據(jù)訪問(wèn)模式選擇數(shù)據(jù)結(jié)構(gòu)。頻繁查找用哈希表,有序數(shù)據(jù)用二叉樹(shù)等。 查表法:對(duì)于復(fù)雜的數(shù)學(xué)計(jì)算(如sin, log),或者協(xié)議解析,預(yù)先計(jì)算好結(jié)果存于數(shù)組中,用空間換時(shí)間
    發(fā)表于 11-12 08:21

    人工智能工程師高頻面試題匯總:循環(huán)神經(jīng)網(wǎng)絡(luò)篇(題目+答案)

    ,提前準(zhǔn)備一些面試常問(wèn)的問(wèn)題,比如概率論與統(tǒng)計(jì)知識(shí)、機(jī)器學(xué)習(xí)的那些算法,或者深度學(xué)習(xí)的框架,還有怎么優(yōu)化模型,循環(huán)神經(jīng)網(wǎng)絡(luò)等,這些都是加分項(xiàng),能有效提高面試通過(guò)率
    的頭像 發(fā)表于 10-17 16:36 ?466次閱讀
    人工智能工程師高頻<b class='flag-5'>面試</b>題匯總:循環(huán)神經(jīng)網(wǎng)絡(luò)篇(題目+答案)

    請(qǐng)問(wèn)rtt studio 的文件夾打紅什么意思?

    rtt studio 的文件夾打紅什么意思?而且文件夾里面實(shí)際是有文件的,但是瀏覽不出來(lái)。
    發(fā)表于 09-18 06:34

    億緯鋰能榮獲杭集團(tuán)2022-2024年度優(yōu)秀供應(yīng)商獎(jiǎng)

    近日,億緯鋰能憑借卓越產(chǎn)品、可靠交付與優(yōu)質(zhì)服務(wù)榮獲杭集團(tuán)頒發(fā)的“2022-2024年度優(yōu)秀供應(yīng)商”獎(jiǎng)。杭集團(tuán)副總經(jīng)理兼杭電器董事長(zhǎng)金華曙、杭電器總經(jīng)理兼杭博電機(jī)總經(jīng)理李明輝出席
    的頭像 發(fā)表于 07-15 09:00 ?743次閱讀

    航天宏圖全棧式3DGS實(shí)景三維重建系統(tǒng)解決方案

    表達(dá)的核心技術(shù),通過(guò)相機(jī)、傳感器等設(shè)備獲取物理空間數(shù)據(jù),并結(jié)合計(jì)算機(jī)視覺(jué)與圖形學(xué)算法,將維圖像轉(zhuǎn)換為三維模型。目前,主流的三維重建方法包括傾斜攝影(多視角立體重建)、激光掃描和神經(jīng)輻
    的頭像 發(fā)表于 06-27 09:28 ?1059次閱讀
    航天宏圖全棧式3DGS實(shí)景三維<b class='flag-5'>重建</b>系統(tǒng)解決方案

    請(qǐng)問(wèn)有沒(méi)有辦法修改live系統(tǒng)上的設(shè)備樹(shù)

    i.MX8M 納米 yocto Linux 我想在不經(jīng)過(guò)構(gòu)建過(guò)程的情況下測(cè)試 Device Tree 更改。有沒(méi)有辦法修改 live 系統(tǒng)上的設(shè)備樹(shù)設(shè)置? This https
    發(fā)表于 04-09 08:23

    硬件面試(一)

    硬件面試(一)
    的頭像 發(fā)表于 02-26 13:55 ?1045次閱讀
    硬件<b class='flag-5'>面試</b>(一)

    樹(shù)科技在物聯(lián)網(wǎng)方面

    。 人工智能算法優(yōu)化:宇樹(shù)科技不斷優(yōu)化其機(jī)器人的人工智能算法,使其能夠在物聯(lián)網(wǎng)環(huán)境中更好地進(jìn)行智能決策。通過(guò)機(jī)器學(xué)習(xí)、深度學(xué)習(xí)等技術(shù),機(jī)器人可以從大量的數(shù)據(jù)中學(xué)習(xí)和提取知識(shí),不斷提高自身的感知、認(rèn)知和決策
    發(fā)表于 02-04 06:48

    面試題】人工智能工程師高頻面試題匯總:概率論與統(tǒng)計(jì)篇(題目+答案)

    、機(jī)器學(xué)習(xí)的那些算法,或者深度學(xué)習(xí)的框架,還有怎么優(yōu)化模型,Transformer等,這些都是加分項(xiàng),能有效提高面試通過(guò)率。本篇小編整理了一些高頻的概率論與統(tǒng)計(jì)——貝
    的頭像 發(fā)表于 01-22 13:00 ?1367次閱讀
    【<b class='flag-5'>面試</b>題】人工智能工程師高頻<b class='flag-5'>面試</b>題匯總:概率論與統(tǒng)計(jì)篇(題目+答案)

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-初識(shí)設(shè)備樹(shù)設(shè)備樹(shù)組成和結(jié)構(gòu)

    的name和value。在設(shè)備樹(shù)中,可描述的信息包括:一、CPU的數(shù)量和類別;、內(nèi)存基地址和大??;三、總線和橋;四、外設(shè)連接;五、中斷控制器和中斷使用情況;六、GPIO控制器和GPIO使用情況;七
    發(fā)表于 01-08 08:32

    飛凌嵌入式ElfBoard ELF 1板卡-初識(shí)設(shè)備樹(shù)設(shè)備樹(shù)組成和結(jié)構(gòu)

    的name和value。在設(shè)備樹(shù)中,可描述的信息包括:一、CPU的數(shù)量和類別;、內(nèi)存基地址和大??;三、總線和橋;四、外設(shè)連接;五、中斷控制器和中斷使用情況;六、GPIO控制器和GPIO使用情況;七
    發(fā)表于 01-07 09:16

    面試題】人工智能工程師高頻面試題匯總:機(jī)器學(xué)習(xí)深化篇(題目+答案)

    隨著人工智能技術(shù)的突飛猛進(jìn),AI工程師成為了眾多求職者夢(mèng)寐以求的職業(yè)。想要拿下這份工作,面試的時(shí)候得展示出你不僅技術(shù)過(guò)硬,還得能解決問(wèn)題。所以,提前準(zhǔn)備一些面試常問(wèn)的問(wèn)題,比如機(jī)器學(xué)習(xí)的那些算法
    的頭像 發(fā)表于 12-16 13:42 ?3283次閱讀
    【<b class='flag-5'>面試</b>題】人工智能工程師高頻<b class='flag-5'>面試</b>題匯總:機(jī)器學(xué)習(xí)深化篇(題目+答案)

    面試題】人工智能工程師高頻面試題匯總:Transformer篇(題目+答案)

    隨著人工智能技術(shù)的突飛猛進(jìn),AI工程師成為了眾多求職者夢(mèng)寐以求的職業(yè)。想要拿下這份工作,面試的時(shí)候得展示出你不僅技術(shù)過(guò)硬,還得能解決問(wèn)題。所以,提前準(zhǔn)備一些面試常問(wèn)的問(wèn)題,比如機(jī)器學(xué)習(xí)的那些算法
    的頭像 發(fā)表于 12-13 15:06 ?2362次閱讀
    【<b class='flag-5'>面試</b>題】人工智能工程師高頻<b class='flag-5'>面試</b>題匯總:Transformer篇(題目+答案)

    人工智能工程師高頻面試題匯總——機(jī)器學(xué)習(xí)篇

    隨著人工智能技術(shù)的突飛猛進(jìn),AI工程師成為了眾多求職者夢(mèng)寐以求的職業(yè)。想要拿下這份工作,面試的時(shí)候得展示出你不僅技術(shù)過(guò)硬,還得能解決問(wèn)題。所以,提前準(zhǔn)備一些面試常問(wèn)的問(wèn)題,比如機(jī)器學(xué)習(xí)的那些算法
    的頭像 發(fā)表于 12-04 17:00 ?2155次閱讀
    人工智能工程師高頻<b class='flag-5'>面試</b>題匯總——機(jī)器學(xué)習(xí)篇