用js刷剑指offer(重建二叉树)
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
js代码
/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
function reConstructBinaryTree(pre, vin)
{
// write code here
const root = reConstructBinaryTreeHelp(pre, 0, pre.length-1, vin, 0, vin.length-1)
return root
}
function reConstructBinaryTreeHelp(pre, preStart, preEnd, mid, midStart, midEnd){
if (preStart > preEnd || midStart > midEnd) {
return null
}
const root = new TreeNode(pre[preStart])
for (let i = midStart; i <= midEnd; i++){
if (mid[i] === pre[preStart]){
root.left = reConstructBinaryTreeHelp(pre, preStart+1, i-midStart+preStart, mid, midStart, i-1)
root.right = reConstructBinaryTreeHelp(pre, i-midStart+preStart+1, preEnd, mid, i+1, midEnd)
break
}
}
return root
}

浙公网安备 33010602011771号