04重建二叉樹

2021-09-28 10:25:58 字數 1019 閱讀 9084

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。

知識點不難,先根中根建立數。主要就是對兩個陣列進行劃分 找的左右子樹。文中

p1是先序的左子樹 p2是先序的又子樹

v1是中序的左子樹 v2是中序的右子樹

js中有乙個array.slice(start,end)函式,可以進行陣列的擷取。這就省去很多事(也是記憶體使用這麼高的原因,它每次偶讀返回乙個新的陣列)。

/* function treenode(x)  */

function

reconstructbinarytree

(pre, vin)

function

def(pre,vin,node)

let p1 =

, p2 =

, v1 =

, v2 =

;let obj =

assist

(p1, p2, v1, v2, pre, vin)

p1 = obj.p1

p2 = obj.p2

v1 = obj.v1

v2 = obj.v2

if(p1.length >0)

if(p2.length >0)

node.val = pre[0]

return node

}//輔助函式:將兩個陣列變成四個陣列

function

assist

(p1,p2,v1,v2,pre,vin)

}else

return

}

為什麼要使用輔助函式:這種找樹的問題其實都乙個套路,如果換成先序+後序 或者 後序+中序 來建立樹,那麼只要修改輔助函式即可。**效率不高,但是看著簡單一點。

劍指04 重建二叉樹

劍指04 重建二叉樹 題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。示例1輸入 1,2,3,4,5,6,7 3,2,4,1,6,5,7 返回值解法 definition...

二叉樹24 重建二叉樹

題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。思路 已知一棵樹的先序遍歷的結果陣列和中序遍歷的結果,要求據此重建一棵二叉樹,即重建所有結點並設定結點之間的指標關係,最後返回...

二叉樹 2255 重建二叉樹

總時間限制 1000ms 記憶體限制 65536kb 描述給定一棵二叉樹的前序遍歷和中序遍歷的結果,求其後序遍歷。輸入輸入可能有多組,以eof結束。每組輸入包含兩個字串,分別為樹的前序遍歷和中序遍歷。每個字串中只包含大寫字母且互不重複。輸出對於每組輸入,用一行來輸出它後序遍歷結果。樣例輸入 dbac...