JavaScript题解剑指offer : 07. 重建二叉树

简介: JavaScript题解剑指offer : 07. 重建二叉树

输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。

leetcode-cn.com/problems/zh…

/**
 * 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}
 */
var buildTree = function(preorder, inorder) {
    return diGui(preorder,inorder);
};
function diGui(preorder,inorder) {
    if(!preorder.length) { // 先序遍历为空null
        return null;
    }
    let value = preorder[0],i; // 利用根节点在钱序遍历节点序列中的第一位特性
    let root = new TreeNode(value); // 创建根节点
    if(preorder.length === 1) return root; // 没有子节点的根节点
    for(i = 0; i < inorder.length; i++) { // 先序遍历找到的根节点在中序遍历循环遍历查找位置,用于递归分割子树。
        if(value === inorder[i]) break;
    }
    let leftInorder = inorder.slice(0, i), rightInorder = inorder.slice(i + 1); // 将先序遍历分割
    let leftPreorder = preorder.slice(1, leftInorder.length + 1), rightPreorder = preorder.slice(leftInorder.length + 1); // 将中序遍历分割
    // 进行递归
    root.left = diGui(leftPreorder,leftInorder); 
    root.right = diGui(rightPreorder, rightInorder);
    return root;
}

目录
相关文章
|
11月前
|
机器学习/深度学习 JavaScript 前端开发
LeetCode 51.N皇后(JavaScript 解题)
LeetCode 51.N皇后(JavaScript 解题)
57 0
|
算法 JavaScript 前端开发
LeetCode 5.最长回文子串【JavaScript 5种思路实现】
LeetCode 5.最长回文子串【JavaScript 5种思路实现】
167 0
|
JavaScript 前端开发 程序员
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
|
存储 JavaScript 前端开发
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
|
存储 前端开发 算法
LeetCode反转链表使用JavaScript解题|前端学算法
LeetCode反转链表使用JavaScript解题|前端学算法
106 0
LeetCode反转链表使用JavaScript解题|前端学算法
|
存储 前端开发 算法
LeetCode最长回文串使用JavaScript解题|前端学算法
LeetCode最长回文串使用JavaScript解题|前端学算法
95 0
LeetCode最长回文串使用JavaScript解题|前端学算法
|
机器学习/深度学习 前端开发 算法
LeetCode反转字符串使用JavaScript解题|前端学算法
LeetCode反转字符串使用JavaScript解题|前端学算法
146 0
LeetCode反转字符串使用JavaScript解题|前端学算法
|
前端开发 算法 JavaScript
LeetCode存在重复元素使用JavaScript解题|前端学算法
LeetCode存在重复元素使用JavaScript解题|前端学算法
102 0
LeetCode存在重复元素使用JavaScript解题|前端学算法
|
JavaScript 前端开发
LeetCode:206. 反转链表 | JavaScript解题
LeetCode:206. 反转链表 | JavaScript解题
80 0
LeetCode:206. 反转链表 | JavaScript解题
|
JavaScript 前端开发 索引
LeetCode:141. 环形链表 | JavaScript解题
LeetCode:141. 环形链表 | JavaScript解题
85 0
LeetCode:141. 环形链表 | JavaScript解题