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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

算法與數據結構 ? 來源:圖解面試算法 ? 2020-07-09 15:03 ? 次閱讀

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

一、題目描述

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。

例如,給出

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

返回如下的二叉樹:

3 / 920 / 157

限制:

0 <= 節點個數 <= 5000

二、題目解析

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

前序遍歷

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

中序遍歷

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

復習過后,我們可以得出以下結論:

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

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

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

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

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

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

終止條件:當in_left_idx > in_right_idx,子樹中序遍歷為空,說明已經越過葉子節點,此時返回 null 。

遞推工作:

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

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

構建根節點root的左子樹和右子樹:通過調用 recursive()方法開啟下一層遞歸。

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

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

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

三、動畫描述

四、圖片描述

五、參考代碼

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

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

1、root.left

2、root.right

六、復雜度分析

時間復雜度

時間復雜度為 O(N)。

空間復雜度

空間復雜度為 O(N)。

七、相關標簽

遞歸

哈希表

八、參考來源

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/ 題解區

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數字
    +關注

    關注

    1

    文章

    1693

    瀏覽量

    51344
  • 二叉樹
    +關注

    關注

    0

    文章

    74

    瀏覽量

    12351

原文標題:面試字節跳動時,我竟然遇到了原題……

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-初識設備之設備組成和結構

    適配不同的板卡。設備組成和結構及dts、dtb、dtsi設備Device Tree由一系列被命名的節點(node)和屬性(property)組成,而節點本身可包含子節點。所謂屬性,其實就是成對出現
    發表于 01-08 08:32

    飛凌嵌入式ElfBoard ELF 1板卡-初識設備之設備組成和結構

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

    Redis使用重要的兩個機制:Reids持久化和主從復制

    持久化的,也就是說要先存儲到磁盤上嘛,這樣才方便主從之間的數據同步。 此外,因為Redis 主從復制的原理也是后端面試必考知識點,所以先送上一份福利【77道redis高頻面試題匯總(帶答案)】,面試用到率85%! 部分內容展示:
    的頭像 發表于 12-18 10:33 ?133次閱讀
    Redis使用重要的兩個機制:Reids持久化和主從復制

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

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

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

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

    人工智能工程師高頻面試題匯總——機器學習篇

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

    程序員去面試只需一個技能征服所有面試官!

    為什么要學嵌入式?面試各方面感覺都良好,為啥最后給斃了?在這么多技術活兒里,嵌入式開發為啥這么吃香?嵌入式開發找工作,為何更容易?……來,來,來,看看不為人知的內部消息!就像我最近聽說的這個事兒,有
    的頭像 發表于 11-05 19:35 ?223次閱讀
    程序員去<b class='flag-5'>面試</b>只需一個技能征服所有<b class='flag-5'>面試</b>官!

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

    01 默克爾的概念 默克爾(Merkle Tree)是一種特殊的二叉樹,它的每個節點都存儲了一個數據塊的哈希值。哈希值是一種可以將任意長度的數據轉換為固定長度的字符串的算法,它具有唯一性和不可
    的頭像 發表于 09-30 18:22 ?1010次閱讀
    什么是默克爾<b class='flag-5'>樹</b>(Merkle Tree)?如何計算默克爾根?

    面試嵌入式工作,會被問什么問題?

    面試嵌入式工作時,面試官可能會從多個方面考察應聘者的知識、技能和經驗。以下是一些常見的嵌入式工作面試問題,這些問題涵蓋了基礎知識、專業技能、項目經驗和個人能力等方面
    的頭像 發表于 07-17 09:26 ?2046次閱讀
    <b class='flag-5'>面試</b>嵌入式工作,會被問什么問題?

    指電極上覆蓋敏感材料的阻值計算

    覆蓋的敏感材料厚度超出指厚度時計算電阻,是否可以視作指電極指間電阻多個周期串聯后與超出指厚度部分敏感材料電阻并聯
    發表于 07-05 14:48

    指MOSFET器件靜電防護魯棒性提升技巧

    柵極接地NMOS是一種廣泛應用的片上ESD器件結構,為達到特定ESD防護等級,一般會采用多指版圖形式來減小器件占用的芯片面積。但是,多指柵極接地NMOS在ESD應力作用下,各個指難于做到均勻
    的頭像 發表于 06-22 00:50 ?553次閱讀
    多<b class='flag-5'>叉</b>指MOSFET器件靜電防護魯棒性提升技巧

    大廠電子工程師常見面試題#電子工程師 #硬件工程師 #電路知識 #面試題

    電子工程師電路
    安泰小課堂
    發布于 :2024年04月30日 17:33:15

    功率放大器基于聲光偏轉效應的聲場重建實驗的應用

    個時刻,分別為0T,0.2T,0.4T,0.6T,0.8T和1.0T,使用光學偏轉法分別得到聲場聲壓值與聲壓法向梯度值。重建得到的聲場圖像如圖1,2所示。   觀察圖1可以看出,重建聲場在邊緣處趨近
    發表于 03-08 17:40

    哈夫曼編碼怎么算 哈夫曼編碼左邊是0還是1

    二叉樹,將出現頻率高的字符用較短的編碼表示,而出現頻率低的字符則用較長的編碼表示。通過這種方式,可以實現對數據進行高效的編碼和解碼。 下面我們將詳細介紹哈夫曼編碼的算法過程。 統計字符頻率 在進行哈夫曼編碼前,首先需
    的頭像 發表于 01-30 11:27 ?3168次閱讀

    MCP251X can驅動移植nuc980采樣用設備配置時,中斷如何配置設備?

    MCP251X can驅動移植nuc980 采樣用設備配置時,中斷如何配置設備? spi0: spi@b0061000 { status = \"okay\"
    發表于 01-17 06:43
    主站蜘蛛池模板: 亚洲视频国产在线精品| 男男被强bl高h文| 快播电影频道| 亚洲理论片在线中文字幕| 丰满艳妇亲伦| 青青草原伊人网| a在线视频免费观看| 女教师苍井空体肉女教师S242| 伊人久久影院大香线蕉| 久草精品在线| 中文字幕人成人乱码亚洲AV| 九色PORNY蝌蚪视频首页| 亚洲色欲色欲综合网站| 极品内射少妇精品无码视频| 亚州精品永久观看视频| 好看的电影网站亚洲一区| 亚洲欧美日韩高清专区| 好大好爽CAO死我了BL| 亚洲视频免费在线观看| 精品无码国产AV一区二区三区| 亚洲日本激情| 老头xxx| 99热这里只有精品9| 日本高清免费观看| 工口肉肉彩色不遮挡| 无限资源在线观看8| 好男人好资源在线观看免费视频| 亚洲在线中文无码首页| 久久亚洲黄色| 99热6精品视频6| 日韩成人性视频| 国产欧美一区二区三区久久| 亚洲成色爱我久久| 久久精品无码成人国产毛| 91精品国产色综合久久| 青青青久久久| 国产欧美无码亚洲毛片| 在线视频av大全色久久| 欧美性视频xxxxhd| 国产精品美女WWW爽爽爽视频| 亚洲午夜久久影院|