跟我一起學算法系列6---重建二叉樹

1.題目描述
輸入某二叉樹的前序遍歷和中序遍歷的結(jié)果,請重建出該二叉樹。假設(shè)輸入的前序遍歷和中序遍歷的結(jié)果中都不含重復的數(shù)字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹并返回。

2.算法分析
首先,我們要理解什么是前序和中序遍歷。在二叉樹的前序遍歷序列中,第一個數(shù)字一定是樹的根結(jié)點的值,然后是左子樹、右子樹。而在中序遍歷序列中,根結(jié)點的值一定在序列的中間,根節(jié)點左側(cè)為左子樹的結(jié)點的值,根節(jié)點右側(cè)為右子樹的結(jié)點的值。

因此,這個題目的解題思路就是掃描中序遍歷序列,找到根結(jié)點的值,然后根據(jù)根節(jié)點的位置,找到左、右子樹的前序遍歷序列和中序遍歷序列,用同樣的方法分別去構(gòu)建左右子樹,即采用遞歸的形式完成。

3.代碼實例


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 數(shù)據(jù)結(jié)構(gòu)和算法--二叉樹的實現(xiàn) 幾種二叉樹 1、二叉樹 和普通的樹相比,二叉樹有如下特點: 每個結(jié)點最多只有兩棵子...
    sunhaiyu閱讀 6,705評論 0 14
  • 樹的概述 樹是一種非常常用的數(shù)據(jù)結(jié)構(gòu),樹與前面介紹的線性表,棧,隊列等線性結(jié)構(gòu)不同,樹是一種非線性結(jié)構(gòu) 1.樹的定...
    Jack921閱讀 4,764評論 1 31
  • 這幾天開學,學校還在上課,最近也是在找工作,很多天都沒有更新文章,現(xiàn)在補一篇二叉樹的文章。 最近校招公司的筆試陸續(xù)...
    zero_sr閱讀 4,107評論 0 5
  • 四、樹與二叉樹 1. 二叉樹的順序存儲結(jié)構(gòu) 二叉樹的順序存儲就是用數(shù)組存儲二叉樹。二叉樹的每個結(jié)點在順序存儲中都有...
    MinoyJet閱讀 1,741評論 0 7
  • 1.樹(Tree): 樹是 n(n>=0) 個結(jié)點的有限集。當 n=0 時稱為空樹。在任意一顆非空樹中:有且僅有一...
    ql2012jz閱讀 1,193評論 0 3

友情鏈接更多精彩內(nèi)容