国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    4784

    瀏覽量

    98044
  • 二叉樹
    +關注

    關注

    0

    文章

    74

    瀏覽量

    12931

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    面試必看!排隊自旋鎖32位變量的域劃分與核心作用

    在操作系統面試中,并發同步機制一直是高頻考點,而排隊自旋鎖作為解決傳統自旋鎖“饑餓” 問題的關鍵技術,其 32 位變量的域劃分更是面試官青睞的 “細節題”。不少同學能說出排隊自旋鎖的基本概念,卻對其
    的頭像 發表于 02-09 16:54 ?806次閱讀
    <b class='flag-5'>面試</b>必看!排隊自旋鎖32位變量的域劃分與核心作用

    面試必看:排隊自旋鎖MCS鎖的實現原理與關鍵考點

    在并發編程面試中,“鎖” 是繞不開的核心話題,而自旋鎖作為輕量級鎖的代表,其優化方案更是高頻考點。
    的頭像 發表于 02-09 16:51 ?746次閱讀
    <b class='flag-5'>面試</b>必看:排隊自旋鎖<b class='flag-5'>之</b>MCS鎖的實現原理與關鍵考點

    探索LMH2191:52 MHz時鐘驅動的卓越

    探索LMH2191:52 MHz時鐘驅動的卓越選 在電子設計領域,時鐘信號的穩定與精確對于設備的性能至關重要。今天,我們就來深入了解一款出色的時鐘驅動芯片——Texas Instruments
    的頭像 發表于 02-09 11:40 ?159次閱讀

    TüV萊茵與杭集團達成戰略合作并頒發歐盟CE-MD符合性證書

    日前,國際獨立第三方檢測、檢驗和認證機構德國萊茵TüV大中華區(簡稱"TüV萊茵")與杭集團股份有限公司(簡稱"杭集團")簽署了戰略合作協議,標志著雙方
    的頭像 發表于 01-15 12:18 ?269次閱讀

    億緯鋰能與杭集團達成戰略合作

    近日,億緯鋰能與杭集團2025年戰略研討會暨戰略合作協議簽約儀式在杭州舉行。億緯鋰能副總裁、商用車電池產品線總裁江吉兵博士,億緯鋰能商用車電池產品線國內銷售部總經理井振江,杭集團董事、副總經理兼
    的頭像 發表于 01-04 18:18 ?1081次閱讀

    C語言的常見算法

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

    通過優化代碼來提高MCU運行效率

    選擇時間復雜度低的算法。 根據訪問模式選擇數據結構。頻繁查找用哈希表,有序數據用二叉樹等。 查表法:對于復雜的數學計算(如sin, log),或者協議解析,預先計算好結果存于數組中,用空間換時間
    發表于 11-12 08:21

    Verilog實現使用Booth編碼和Wallace的定點補碼乘法器原理

    結果只需要一個周期,大大提升了乘法器性能。 1.Booth編碼 將乘數看作從最低位開始的一串進制數字。Booth算法的基本思路是:對于具有連續0和1的組,需要產生的部分積較少。對于乘數中每個0
    發表于 10-23 08:01

    人工智能工程師高頻面試題匯總:循環神經網絡篇(題目+答案)

    ,提前準備一些面試常問的問題,比如概率論與統計知識、機器學習的那些算法,或者深度學習的框架,還有怎么優化模型,循環神經網絡等,這些都是加分項,能有效提高面試通過率
    的頭像 發表于 10-17 16:36 ?704次閱讀
    人工智能工程師高頻<b class='flag-5'>面試</b>題匯總:循環神經網絡篇(題目+答案)

    請問rtt studio 的文件夾打紅什么意思?

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

    信號發生器如何與波束賦形算法配合優化?

    -120dBm,測試算法在低SNR下的初始波束捕獲能力。 毫米波通信:生成28GHz或39GHz的參考信號,帶寬400MHz,驗證算法在高頻段的大規模MIMO波束訓練性能。 、信號發生器與波束賦形
    發表于 08-08 14:41

    基于FPGA實現FOC算法PWM模塊設計

    哈嘍,大家好,從今天開始正式帶領大家從零到一,在FPGA平臺上實現FOC算法,整個算法的框架如下圖所示,如果大家對算法的原理不是特別清楚的話,可以先去百度上學習一下,本教程著重介紹實現過程,弱化原理的介紹。那么本文將從PWM模塊
    的頭像 發表于 07-17 15:21 ?3492次閱讀
    基于FPGA實現FOC<b class='flag-5'>算法</b><b class='flag-5'>之</b>PWM模塊設計

    億緯鋰能榮獲杭集團2022-2024年度優秀供應商獎

    近日,億緯鋰能憑借卓越產品、可靠交付與優質服務榮獲杭集團頒發的“2022-2024年度優秀供應商”獎。杭集團副總經理兼杭電器董事長金華曙、杭電器總經理兼杭博電機總經理李明輝出席
    的頭像 發表于 07-15 09:00 ?981次閱讀

    航天宏圖全棧式3DGS實景三維重建系統解決方案

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

    請問有沒有辦法修改live系統上的設備

    i.MX8M 納米 yocto Linux 我想在不經過構建過程的情況下測試 Device Tree 更改。有沒有辦法修改 live 系統上的設備設置? This https
    發表于 04-09 08:23