add: 从前序与中序遍历序列构造二叉树
This commit is contained in:
@ -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
|
||||
}
|
Reference in New Issue
Block a user