LeetCode算法每日一题总结
根据前序和中序遍历序列构造二叉树
要点
- 读懂前序和中序遍历,他所拥有的性质
- 如何构造二叉树---js的构造函数 -如何获得根结点的下标--indexOf -如何用递归--递归什么
代码实现 /**
- 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}
//1.先写出构造函数--返回一个数组 //2.要写出根结点的下标 //3.根据下标去分数组 //4.要给构造的数组--变成二叉树,就需要给每个root加左右孩子结点 //即在该作用域内把递归接收返回值做为root的左右孩子 //5.如果递归到最后长度是0呢?-左右孩子都为null
var buildTree = function (preorder, inorder) {if(preorder.length==0&&inorder.length==0)return null;let i=inorder.indexOf(preorder[0]);let root=new TreeNode(preorder[0]);let lp=preorder.slice(1,i+1);let rp=preorder.slice(i+1,preorder.length);let li=inorder.slice(0,i);let ri=inorder.slice(i+1,inorder.length);root.left= buildTree(lp,li);root.right= buildTree(rp,ri);return root;};}笔记 1`const b=['a','b','c','d','e']; const c={ a:66, b:45 } const d =['c','d','a']; console.log(b[d[2]]);//实际就是b['a'],但俩个数组,肯定无法实现解构,这里会是undefined console.log(c[b[0]]);//c为对象,可以在对象里找数组某个元素【即对象的属性名】的属性值 console.log(d.indexOf(b[0]));//这个为两数组的检验下标--注意与解构的区别
`