ds-algo-study
Version:
Just experimenting with publishing a package
19 lines (16 loc) • 752 B
JavaScript
// View the full problem and run the test cases at:
// https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/
const { TreeNode } = require('./tree_node.js');
function buildTree(preorder, inorder) {
if (!preorder.length && !inorder.length) return null;
let first = preorder[0];
let root = new TreeNode(first);
let rootIdx = inorder.indexOf(first);
let leftInOrder = inorder.slice(0, rootIdx);
let rightInOrder = inorder.slice(rootIdx + 1);
let leftPreOrder = preorder.filter(el => leftInOrder.include(el));
let rightPreOrder = preorder.filter(el => rightInOrder.include(el));
root.left = buildTree(leftPreOrder, leftInOrder);
root.right = buildTree(rightPreOrder, rightInOrder);
return root;
}