色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

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

Offer系列面試題0:重建二叉樹

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:圖解面試算法 ? 2020-07-09 15:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天分享的題目來源于 LeetCode 上的劍指 Offer 系列面試題07. 重建二叉樹,近半年在微軟面試環(huán)節(jié)出現(xiàn)過 2 次,屬于中高難度的算法題!

一、題目描述

輸入某二叉樹的前序遍歷和中序遍歷的結(jié)果,請重建該二叉樹。假設(shè)輸入的前序遍歷和中序遍歷的結(jié)果中都不含重復(fù)的數(shù)字。

例如,給出

前序遍歷preorder=[3,9,20,15,7] 中序遍歷inorder=[9,3,15,20,7]

返回如下的二叉樹:

3 / 920 / 157

限制:

0 <= 節(jié)點個數(shù) <= 5000

二、題目解析

首先,我們先來復(fù)習(xí)一下前序遍歷、中序遍歷。(在下方的視頻中分布講解)

前序遍歷

二叉樹的前序遍歷順序是:根節(jié)點、左子樹、右子樹,每個子樹的遍歷順序同樣滿足前序遍歷順序。

中序遍歷

二叉樹的中序遍歷順序是:左子樹、根節(jié)點、右子樹,每個子樹的遍歷順序同樣滿足中序遍歷順序。

復(fù)習(xí)過后,我們可以得出以下結(jié)論:

在二叉樹的前序遍歷序列中,第一個數(shù)字總是樹的根結(jié)點的值;

在二叉樹的中序遍歷序列中,根結(jié)點的值在序列的中間,左子樹的結(jié)點的值位于根結(jié)點的值的左邊,而右子樹的結(jié)點的值位于根結(jié)點的值的右邊

以本題的序列為例,前序遍歷序列的第一個數(shù)字 3 就是根結(jié)點的值,在中序遍歷序列,找到根結(jié)點值的位置。根據(jù)中序遍歷特點,在根結(jié)點的值 3前面的數(shù)字都是左子樹結(jié)點的值,在根結(jié)點的值 3后面的數(shù)字都是右子樹結(jié)點的值。

二叉樹很重要的一個性質(zhì)是遞歸,在找到了左子樹、右子樹的前序遍歷序列和中序遍歷序列后,我們可以按照同樣的方法去確定子左子樹和子右子樹的構(gòu)建。

具體的代碼編寫思路如下(來源于 Krahets's Blog):

遞推參數(shù):前序遍歷中根節(jié)點的索引pre_root_idx、中序遍歷左邊界in_left_idx、中序遍歷右邊界in_right_idx。

終止條件:當(dāng)in_left_idx > in_right_idx,子樹中序遍歷為空,說明已經(jīng)越過葉子節(jié)點,此時返回 null 。

遞推工作:

建立根節(jié)點 root :值為前序遍歷中索引為pre_root_idx的節(jié)點值。

搜索根節(jié)點 root 在中序遍歷的索引 i :為了提升搜索效率,本題解使用哈希表map預(yù)存儲中序遍歷的值與索引的映射關(guān)系,每次搜索的時間復(fù)雜度為 O(1)。

構(gòu)建根節(jié)點root的左子樹和右子樹:通過調(diào)用 recursive()方法開啟下一層遞歸。

左子樹:根節(jié)點索引為 pre_root_idx + 1 ,中序遍歷的左右邊界分別為 in_left_idx 和 i - 1。

右子樹:根節(jié)點索引為 i - in_left_idx + pre_root_idx + 1(即:根節(jié)點索引 + 左子樹長度 + 1),中序遍歷的左右邊界分別為 i + 1 和 in_right_idx。

返回值:返回root,含義是當(dāng)前遞歸層級建立的根節(jié)點root為上一遞歸層級的根節(jié)點的左或右子節(jié)點。

三、動畫描述

四、圖片描述

五、參考代碼

classSolution{ //在中序序列中查找與前序序列首結(jié)點相同元素的時候,如果使用while循環(huán)去一個個找效率很慢 //這里我們借助數(shù)據(jù)結(jié)構(gòu)HashMap來輔助查找,在開始遞歸之前把所有的中序序列的元素和它們所在的下標(biāo)存到一個map中,這樣查找的時間復(fù)雜度是O(logn) HashMapmap=newHashMap<>(); //保留的前序遍歷 int[]preorder; publicTreeNodebuildTree(int[]preorder,int[]inorder){ this.preorder=preorder; //在開始遞歸之前把所有的中序序列的元素和它們所在的下標(biāo)存到一個map中 for(inti=0;iin_right_idx){ returnnull; } //root_idx是在前序里面的 TreeNoderoot=newTreeNode(preorder[pre_root_idx]); //通過map,根據(jù)前序的根節(jié)點的值,在中序中獲取當(dāng)前根的索引 intidx=map.get(preorder[pre_root_idx]); //左子樹的根節(jié)點就是左子樹的(前序遍歷)第一個,就是+1,左邊邊界就是left,右邊邊界是中間區(qū)分的idx-1 root.left=recursive(pre_root_idx+1,in_left_idx,idx-1); //右子樹的根,就是右子樹(前序遍歷)的第一個,就是當(dāng)前根節(jié)點加上左子樹的數(shù)量 root.right=recursive(pre_root_idx+(idx-1-in_left_idx+1)+1,idx+1,in_right_idx); returnroot; } }

這段代碼的一個難點就是root.left與root.right,我這里抽離出來詳細(xì)解釋一下。

1、root.left

2、root.right

六、復(fù)雜度分析

時間復(fù)雜度

時間復(fù)雜度為 O(N)。

空間復(fù)雜度

空間復(fù)雜度為 O(N)。

七、相關(guān)標(biāo)簽

遞歸

哈希表

八、參考來源

1、https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof/solution/mian-shi-ti-07-zhong-jian-er-cha-shu-di-gui-fa-qin/ 題解區(qū)

2、https://krahets.gitee.io/views/sword-for-offer/2020-02-24-sword-for-offer-07.html

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

    關(guān)注

    1

    文章

    1698

    瀏覽量

    51948
  • 二叉樹
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    12650

原文標(biāo)題:面試字節(jié)跳動時,我竟然遇到了原題……

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    每周推薦!硬件設(shè)計指南+無刷電機(jī)原理圖大全+工程師面試題庫匯總

    、硬件工程師或研發(fā)類筆試面試題庫匯總 一、模擬電路(基本概念和知識總攬) 1、基本放大電路種類 (電壓放大器,電流放大器,互導(dǎo)放大器和互阻放大器),優(yōu)缺點,特別是廣泛采用差分結(jié)構(gòu)的原因。 2、負(fù)反饋種類
    發(fā)表于 07-07 14:38

    硬件工程師或研發(fā)類筆試面試題庫匯總

    ,并具有電壓跟隨的特點。常用于電壓放大電路的輸入級和輸出級,在功率放大電路中也常采用射極輸出的形式。廣泛采用差分結(jié)構(gòu)的原因是差分結(jié)構(gòu)可以抑制溫度漂移現(xiàn)象。? 7、極管主要用于限幅,整流,鉗位
    發(fā)表于 07-01 14:21

    最全的硬件工程師筆試試題

    硬件面試題之一 1、下面是一些基本的數(shù)字電路知識問題,請簡要回答之。 (1) 什么是 Setup 和 Hold 時間? 答:Setup/Hold Time 用于測試芯片對輸入信號和時鐘信號之間的時間
    發(fā)表于 06-26 15:34

    【硬件方向】名企面試筆試真題:大疆創(chuàng)新校園招聘筆試題

    名企面試筆試真題:大疆創(chuàng)新校園招聘筆試題-硬件 是幾年前的題目,不過值得參考一下哦 純分享貼,有需要可以直接下載附件獲取完整資料! (如果內(nèi)容有幫助可以關(guān)注、點贊、評論支持一下哦~)
    發(fā)表于 05-16 17:31

    硬件工程師面試/筆試經(jīng)典 100 題

    分享一些常見的硬件工程師面試/筆試題。公眾號后臺回復(fù)關(guān)鍵字:100題,可獲取完整的PDF。--END--免責(zé)聲明:本文轉(zhuǎn)自網(wǎng)絡(luò),版權(quán)歸原作者所有,如涉及作品版權(quán)問題,請及時與我們聯(lián)系,謝謝!加入粉絲
    的頭像 發(fā)表于 04-30 19:34 ?730次閱讀
    硬件工程師<b class='flag-5'>面試</b>/筆試經(jīng)典 100 題

    硬件工程師面試必看試題(經(jīng)典)

    硬件工程師面試試題 模擬電路 1、基爾霍夫定理的內(nèi)容是什么?(仕蘭微電子) 2、平板電容公式(C=εS/4πkd)。(未知) 3、最基本的如三極管曲線特性。(未知) 4、描述反饋電路的概念
    發(fā)表于 04-21 15:36

    請問有沒有辦法修改live系統(tǒng)上的設(shè)備

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

    Nginx常見面試題總結(jié)

    Nginx是一個 輕量級/高性能的反向代理Web服務(wù)器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 協(xié)議。
    的頭像 發(fā)表于 03-03 09:36 ?553次閱讀
    Nginx常見<b class='flag-5'>面試題</b>總結(jié)

    硬件面試(一)

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

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

    ?隨著人工智能技術(shù)的突飛猛進(jìn),AI工程師成為了眾多求職者夢寐以求的職業(yè)。想要拿下這份工作,面試的時候得展示出你不僅技術(shù)過硬,還得能解決問題。所以,提前準(zhǔn)備一些面試常問的問題,比如概率論與統(tǒng)計知識
    的頭像 發(fā)表于 01-22 13:00 ?960次閱讀
    【<b class='flag-5'>面試題</b>】人工智能工程師高頻<b class='flag-5'>面試題</b>匯總:概率論與統(tǒng)計篇(題目+答案)

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

    適配不同的板卡。設(shè)備組成和結(jié)構(gòu)及dts、dtb、dtsi設(shè)備Device Tree由一系列被命名的節(jié)點(node)和屬性(property)組成,而節(jié)點本身可包含子節(jié)點。所謂屬性,其實就是成對出現(xiàn)
    發(fā)表于 01-07 09:16

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

    ,或者深度學(xué)習(xí)的框架,還有怎么優(yōu)化模型,這些都是加分項,能有效提高面試通過率。本篇小編整理了一些高頻的機(jī)器學(xué)習(xí)深化方面的面試題,這些題目都是從實際面試中總結(jié)出來的,非
    的頭像 發(fā)表于 12-16 13:42 ?2861次閱讀
    【<b class='flag-5'>面試題</b>】人工智能工程師高頻<b class='flag-5'>面試題</b>匯總:機(jī)器學(xué)習(xí)深化篇(題目+答案)

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

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

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

    ,或者深度學(xué)習(xí)的框架,還有怎么優(yōu)化模型,這些都是加分項,能有效提高面試通過率。本篇小編整理了一些高頻的機(jī)器學(xué)習(xí)方面的面試題,這些題目都是從實際面試中總結(jié)出來的,非常具
    的頭像 發(fā)表于 12-04 17:00 ?1568次閱讀
    人工智能工程師高頻<b class='flag-5'>面試題</b>匯總——機(jī)器學(xué)習(xí)篇

    什么是默克爾(Merkle Tree)?如何計算默克爾根?

    01 默克爾的概念 默克爾(Merkle Tree)是一種特殊的二叉樹,它的每個節(jié)點都存儲了一個數(shù)據(jù)塊的哈希值。哈希值是一種可以將任意長度的數(shù)據(jù)轉(zhuǎn)換為固定長度的字符串的算法,它具有唯一性和不可
    的頭像 發(fā)表于 09-30 18:22 ?2424次閱讀
    什么是默克爾<b class='flag-5'>樹</b>(Merkle Tree)?如何計算默克爾根?
    主站蜘蛛池模板: 亚洲乱亚洲乱妇13p 亚洲乱色视频在线观看 | 免费看国产曰批40分钟 | 囯产精品久久久久久久久蜜桃 | 欧美精品乱码99久久蜜桃 | 娇妻归来在线观看免费完整版电影 | 高清欧美一区二区三区 | 日日日操操操 | 床上色APP下载免费版 | 天堂无码人妻精品AV一区 | 娇妻中日久久持久久 | xxx暴力xxx| 国产在线亚洲精品观 | 久久妇女高潮几次MBA | 毛片一区二区三区 | 美女脱了内裤张开腿让男人桶到爽 | 欧美在线看费视频在线 | 国产AV视频一区二区蜜桃 | 久久香蕉国产线看观看精品 | 柠檬福利精品视频导航 | 久久精品一区二区免费看 | 久久人人玩人妻潮喷内射人人 | 中文字幕一区中文亚洲 | 国产成人精品综合在线 | 亚洲AV久久无码精品九号软件 | 黑色丝袜美女被网站 | 午夜福利试看120秒体验区 | 国语自产拍大学生在线观看 | 亚洲精品自在在线观看 | 果冻传媒妈妈要儿子 | 国产一区二区波多野结衣 | 性色欲情网站IWWW | 被爽到叫呻呤视频免费视频 | 亚洲视频中文 | 国产精品免费视频播放 | 精品亚洲国产成AV人片传媒 | 国产自产第一区c国产 | 日本无码专区亚洲麻豆 | 一本道无码字幕在线看 | 日韩毛片大全 | 国产白浆视频在线播放 | 全黄h全肉细节全文 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品