在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

面試算法之重建二叉樹

算法與數據結構 ? 來源:算法與數據結構 ? 2019-11-27 15:59 ? 次閱讀

從今天開始,公眾號陸陸續續開始插寫用動畫形式展現算法題,如劍指offer、Leedcode里經典面試題型,同時也會更新數據結構與算法基礎、網絡原理等知識。

以為無論是面試還是實際項目,對算法的要求也非常的嚴格,所以小鹿盡最大努力把算法還原成動畫形式來講解,爭取讓每個人都能看懂算法、學會算法。

1

題目

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

2

基礎鞏固

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

2.1 前序遍歷

前序遍歷一顆二叉樹,首先輸出根節點,然后輸出左子節點,最后輸出右子節點。

比如,遍歷一下二叉樹:

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

2.2 中序遍歷

中序遍歷一棵二叉樹,首先輸出左子節點,然后輸出輸出根節點,最后右子節點。

以上邊二叉樹為例,通過中序遍歷輸出。

3

解題思路

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

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

那么前序遍歷和中序遍歷可不可以?那我們要試一下,我們上邊通過前序遍歷找到第一個根節點就是 1,如圖

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

此時我們已經劃分左右子節點了,但是左邊的子節點中哪些又是根節點呢?我們再回到前序遍歷中,根據前序遍歷的特點,根、左、右,在從子節點進行劃分,那么 1 結點中的子節點誰為根節點呢?

我們一眼就能看出來,就是 2 結點,那么剩余的 4,7 左右結點怎么分呢?我們根據上述再回到中序遍歷,找到 2 根節點,根據中序遍歷左、根、右的特點,找到 2 結點,那左邊的就是左子節點,右邊的就是右子節點,我們可以看到,左邊有兩個數,正是 4 和 7 結點。

右邊只有 1 結點,1 結點我們剛剛說了,是根節點,所以以 2 為根節點是沒有右子節點的,剩下的數字也是同樣的方式區分,自己可以試一下,動手畫一畫。

我們仔細發現,其實整個層層往下,以及左右,都是相同的解決方式,而且大問題可以分解為小問題,我們下意識就應該想起小鹿之前分享過的知識,那就是遞歸,既然是遞歸,就應該有終止條件,終止條件就是當子節點為空時,此時遞歸結束。

4

測試用例

我們之前的文章強調過,手寫代碼之前,一定先把測試用例想好,為了能夠在手寫代碼的時候考慮到邊界情況,還為了防止你到時候面試涂涂改改。

4.1 普通測試

完全二叉樹、非完全二叉樹。

4.2 特殊測試

只有左子節點二叉樹,只有右子節點、只有一個結點的二叉樹 —— 特殊二叉樹測試。

4.3 輸入測試

空樹、空指針null、前序和中序不匹配。

5

代碼實現

JavaScript 版本

Java 版本

C 語言版本

Python 版本

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

    關注

    23

    文章

    4615

    瀏覽量

    92962
  • 二叉樹
    +關注

    關注

    0

    文章

    74

    瀏覽量

    12335

原文標題:動畫:面試算法之重建二叉樹

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

收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

    面試嵌入式都會問那些問題呢?

    作為一名電子工程專業的畢業生,我對嵌入式系統開發一直充滿熱情。當我決定踏入這個行業,尋找屬于自己的職業道路時,面試成為了我必須面對的挑戰。在這里,我想分享一些我在嵌入式系統面試中遇到的問題以及我的應對經驗。
    的頭像 發表于 11-27 09:13 ?333次閱讀
    <b class='flag-5'>面試</b>嵌入式都會問那些問題呢?

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

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

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

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

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

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

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

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

    機器學習算法原理詳解

    機器學習作為人工智能的一個重要分支,其目標是通過讓計算機自動從數據中學習并改進其性能,而無需進行明確的編程。本文將深入解讀幾種常見的機器學習算法原理,包括線性回歸、邏輯回歸、支持向量機(SVM)、決策和K近鄰(KNN)算法,探
    的頭像 發表于 07-02 11:25 ?1095次閱讀

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

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

    原理圖設計里兩顆重要的(國產EDA)

    原理圖里面兩顆重要的,那就是元件和網絡,作為EDA工具中的重要視圖和概念,雖然看似枯燥,但它們扮演著非常重要的角色,它們為電路圖的層次化結構提供了有力支撐。想象一個大型的電路設計項目,就像一個
    的頭像 發表于 05-29 17:47 ?757次閱讀
    原理圖設計里兩顆重要的<b class='flag-5'>樹</b>(國產EDA)

    康謀分享 | aiSim5仿真場景重建感知置信度評估(三)

    aiSim5能重建高精度的賽道、車庫、高速公路等真實交通場景,用于測試和訓練ADAS/AD系統。通過全局行動日志,能將駕駛數據轉化為場景重建,車道線檢測算法和多目標檢測算法在仿真與現實
    的頭像 發表于 05-08 16:59 ?2447次閱讀
    康謀分享 | aiSim5仿真場景<b class='flag-5'>重建</b>感知置信度評估(三)

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

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

    基于NeRF/Gaussian的全新SLAM算法

    基于NeRF的SLAM算法采用全局地圖和圖像重建損失函數,通過可微分渲染捕獲稠密的光度信息,具有高保真度。
    的頭像 發表于 01-26 10:48 ?662次閱讀
    基于NeRF/Gaussian的全新SLAM<b class='flag-5'>算法</b>

    工業上常見的高精度主動式重建算法

    三維重建目前是最為炙手可熱的領域。攝影測量或結構光投影技術可以解決漫反射重建問題,但卻無法有效應對鏡面反射物體(如玻璃、積水、反光物體和汽車車身)等的重建挑戰。
    發表于 01-05 10:46 ?488次閱讀
    工業上常見的高精度主動式<b class='flag-5'>重建</b><b class='flag-5'>算法</b>
    主站蜘蛛池模板: 久久天天| 久久影视免费体验区午夜啪啪| 最近高清在线视频观看免费| www.丁香.com| 操的网站| 72种姿势欧美久久久久大黄蕉| 国产欧美精品一区二区色综合| 精品噜噜噜噜久久久久久久久| 四虎最新免费网址| 一级 黄 色 片免费| 五月天在线播放| 国产精品久久久久乳精品爆| 二区三区在线| 五月婷婷六月天| 在线精品一区二区三区| 在线观看你懂的视频| 午夜片在线| 日韩欧美不卡片| 久久激情五月| 免费a在线看| 日韩毛片在线影视| 开心激情婷婷| 网站四虎1515hhcom| 欧美性精品| 精品久久久久久国产免费了 | 久久香蕉综合色一综合色88| 好看的一级毛片| 免费国产zzzwww色| 国产高清视频免费最新在线| 午夜小视频在线| 一级一片一a一片| 美女操网站| 亚洲一区色| 在线精品国产第一页| 男男互攻h啪肉np文厉世| 天堂bt资源www在线| 久久夜色精品国产亚洲| 夜夜骑天天操| 影院在线观看免费| 一个色亚洲| 萌白酱香蕉白丝护士服喷浆|