题目:105. 从前序与中序遍历序列构造二叉树
分析
-
前序遍历:根节点-左子树-右子树
-
中序遍历:左子树-更节点-右子树 如果忘记了二叉树的知识,可以回顾这篇文章:二叉树学习
function buildTree(preorder, inorder) {
// 当preorder和inorder均为空的时候说明已经到了空节点
if (!preorder.length || !inorder.length) return null;
// 获取根节点
const root = preorder[0];
// 找到preorder[0]对应inorder中的位置
const index = inorder.indexOf(preorder.shift());
// 依据preorder的顺序来构建左右子树,必须先构造左子树,再构造右子树
const leftTree = buildTree(preorder, inorder.slice(0, index));
const rightTree = buildTree(preorder, inorder.slice(index + 1));
return {
val: root,
left: leftTree,
right: rightTree,
};
}