剑指Offer——重建二叉树(JS实现)

简介: 剑指Offer——重建二叉树(JS实现)

题目描述

image.png

解题思路

  • 首先我们要明白遍历规则。
  • 前序遍历指的是根>左>右
  • 中序遍历指的是左>根>右
  • 使用递归遍历的思想,首先定义递归结束条件,如果输入的列表只有一个元素,则直接返回这个树节点。
  • 让前序遍历数组的第一个元素作为根节点。
  • 定义变量i用来分割中序遍历数组中的左右子树,这个i就是根节点在中序遍历数组中的下标。
  • 两个参数,可以分别理解为子树的前序遍历和中序遍历

实现代码

var buildTree = function (preorder, inorder) {
    if (preorder.length === 0 || inorder.length === 0) {
        return null;
    }
    if (preorder.length === 1) {
        return new TreeNode(preorder[0]);
    }
    let root = new TreeNode(preorder[0]);
    let i = inorder.indexOf(preorder[0]);
    root.left = buildTree(preorder.slice(1,i+1),inorder.slice(0,i));
    root.right = buildTree(preorder.slice(i+1),inorder.slice(i+1));
    return root;
};
作者:Always_positive
链接:https://juejin.cn/post/6948663933133651976
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章
|
5月前
|
JavaScript 前端开发
JavaScript题解剑指offer : 09. 用两个栈实现队列
JavaScript题解剑指offer : 09. 用两个栈实现队列
24 0
|
存储 JavaScript 前端开发
《剑指 Offer(第 2 版)》队列部分 JavaScript 题解
《剑指 Offer(第 2 版)》队列部分 JavaScript 题解
|
JavaScript 前端开发 程序员
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
|
存储 JavaScript 前端开发
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
|
JavaScript 前端开发
利用JavaScript实现二级联动
利用JavaScript实现二级联动 要实现JavaScript二级联动效果,首先要确定需要哪些技术: 二维数组 for in循环 new Option(text,value,true,true) add(option,null) onchange() 表单事件 HTML代码: <!-- <input type="text" id="text"> --> 请选择省份: <select name="" id="provinces"> <!-- <option value="江苏省">江苏省</option>
|
JavaScript 前端开发
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
167 0
|
移动开发 JavaScript weex
weex-自定义module,实现weex在iOS的本地化,js之间互相跳转,交互,传值(iOS接入weex的最佳方式)
weex-自定义module,实现weex在iOS的本地化,js之间互相跳转,交互,传值(iOS接入weex的最佳方式)
220 0
|
JavaScript
JS中实现或退出全屏
JS中实现或退出全屏
153 0
|
前端开发 JavaScript
前端:JS实现双击table单元格变为可编辑状态
前端:JS实现双击table单元格变为可编辑状态
365 0