想想前序遍历以及中序遍历的特点
显然可以不断递归构造树形结构
递归的函数注意是同一边,用前序与中序两种不同表示方法
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {number[]} preorder
* @param {number[]} inorder
* @return {TreeNode}
*/
// 思路:递归
// 性质:pre的头和inorder的中间的一样,然后反复去搞
var buildTree = function(preorder, inorder) {
// 得到总的长度
let len = preorder.length
function des(preL,preR,inL,inR){
if( preL > preR || inL > inR){
return null
}
let root = new TreeNode()
let k = inorder.indexOf(preorder[preL])
root.val = preorder[preL]
// 想想k从哪里找的
let numLeft = k - inL
// 左边一堆还是