輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。
知識點不難,先根中根建立數。主要就是對兩個陣列進行劃分 找的左右子樹。文中
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...