输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
function reConstructBinaryTree(pre, vin) {
const preTree = Array.from(pre)
const vinTree = Array.from(vin)
if(preTree.length === 0 || vinTree.length === 0) {
return null
}
const rootIndex = vinTree.indexOf(preTree[0])
const leftTree = vinTree.slice(0, rootIndex)
const rightTree = vinTree.slice(rootIndex + 1, vinTree.length)
return {
val: preTree[0],
left: reConstructBinaryTree(preTree.slice(1,rootIndex + 1), leftTree),p
right: reConstructBinaryTree(preTree.slice(rootIndex + 1, vinTree.length), rightTree)
}
}