美文网首页
重建二叉树

重建二叉树

作者: 我的天气很好啦 | 来源:发表于2018-10-02 17:13 被阅读0次

🍞环境:牛客的编译环境
🍰语言:JavaScript
☕️难点:
1⃣️一直理解错了array的slice方法,slice方法可以返回一个新的数组,包含从 start 到 end (不包括end元素)。
2⃣️递归没出口,刚开始自己思考的逻辑没问题,但是很少写递归的程序,导致我的递归没有出口,也就没有输出结果。
🍊题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
🌟解题思路:
根据前序遍历的特点,可以知道第一个元素一定是根元素;再根据中序遍历的特点,可以通过indexof找到根元素的位置,根元素左边的元素都是左子树,右边的元素则是右子树。根据这个规律,利用递归的方法可以得到最里层的元素,然后回溯返回。
🥝代码:

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */


function reConstructBinaryTree(pre, vin) {
    // write code here
    if (pre.length > 0) {
        let tn = new TreeNode(pre[0]);
        let index = vin.indexOf(pre[0]);
        tn.left = reConstructBinaryTree(pre.slice(1, index + 1), vin.slice(0, index));
        tn.right = reConstructBinaryTree(pre.slice(index + 1), vin.slice(index + 1));
        return tn;
    } else {
        return null;
    }
}

相关文章

  • LeetCode 每日一题 [42] 重建二叉树

    LeetCode 重建二叉树 [中等] 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历...

  • Java后端开发算法基础面试题分享,你离大厂也许就差这份面试题!

    一、算法基础 1. 重建二叉树 题目: 输入一棵二叉树前序遍历和中序遍历的结果,请重建该二叉树。 注意: 二叉树中...

  • 重建二叉树

    已知二叉树的前序和中序遍历序列,以此重建二叉树。 重建二叉树,必须知道前序和中序序列,其他组合都不行。 publi...

  • 剑指Offer(四)

    剑指Offer(四) 重建二叉树 题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的...

  • Java日记2018-06-19

    重建二叉树 矩阵中的路径

  • 一题一算法2018-02-06(重建二叉树)

    题目:重建二叉树 题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍...

  • 重建二叉树

    《剑指offer》面试题7:重建二叉树 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前...

  • 重建二叉树

    题目来源:牛客网--重建二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序...

  • java中如何实现重建二叉树

    java中如何实现重建二叉树 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和...

  • 07:重建二叉树

    题目07:重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果...

网友评论

      本文标题:重建二叉树

      本文链接:https://www.haomeiwen.com/subject/tvkaoftx.html