add: 从前序与中序遍历序列构造二叉树

This commit is contained in:
2020-05-22 07:30:33 +08:00
parent 2120bcdecf
commit bf6f71f55f
4 changed files with 38 additions and 0 deletions

View File

@ -0,0 +1,26 @@
/**
* Definition for a binary tree node.
*/
function TreeNode (val) {
this.val = val
this.left = this.right = null
}
// 前序遍历:根左右
// 中序遍历:左根右
// 前序遍历知道根、中序遍历知道左边长度。
/**
* @param {number[]} preorder
* @param {number[]} inorder
* @return {TreeNode}
*/
export const buildTree = function (preorder, inorder) {
if (inorder.length === 0) return null
const root = new TreeNode(preorder[0])
const index = inorder.indexOf(preorder[0])
root.left = buildTree(preorder.slice(1, index + 1), inorder.slice(0, index))
root.right = buildTree(preorder.slice(index + 1), inorder.slice(index + 1))
return root
}