美文网首页
【剑指offer】07重建二叉树

【剑指offer】07重建二叉树

作者: 芒果加奶 | 来源:发表于2019-08-26 17:19 被阅读0次
function TreeNode(val) {
  this.val = val;
  this.left = null;
  this.right = null;
}

/**
 * @param {number[]} preorder
 * @param {number[]} inorder
 * @return {TreeNode}
 * 思路:前序遍历确定根节点,中序遍历确定左右子树
 */
function reConstructBinaryTree(preOrder, InOrder) {
  if (preOrder.length === 0 || InOrder.length === 0) return null;
  //找到根节点,前序遍历第一个节点
  let root = preOrder[0];
  let index = InOrder.indexOf(root);
  //在中序遍历上根据根节点找到左右子树
  let InorderLeft = InOrder.slice(0, index + 1); //左子树中序遍历
  let InorderRight = InOrder.slice(index + 1); //右子树中序遍历
  //构建树
  let tree = new TreeNode(root);
  //分别递归左右子树->找到子根节点->找到左右子子树
  //传参还是前序遍历和中序遍历
  let preOrderLeft = preOrder.slice(1, index + 1); // 左子树前序遍历
  let preOrderRight = preOrder.slice(index + 1); // 右子树前序遍历
  tree.left = reConstructBinaryTree(preOrderLeft, InorderLeft);
  tree.right = reConstructBinaryTree(preOrderRight, InorderRight);
  return tree;
}
console.log(reConstructBinaryTree([1, 2, 4, 7, 3, 5, 6, 8], [4, 7, 2, 1, 5, 3, 8, 6]));

相关文章

  • LeetCode | 面试题07. 重建二叉树【剑指Offer】

    LeetCode 面试题07. 重建二叉树【剑指Offer】【Medium】【Python】【二叉树】【递归】 问...

  • 71.重建二叉树

    day18: 剑指 Offer 07. 重建二叉树[https://leetcode-cn.com/prob...

  • 剑指Offer 07. 重建二叉树

    剑指 Offer 07. 重建二叉树 题目传送门[https://leetcode-cn.com/problems...

  • 剑指Offer--(5)重建二叉树

    title: 剑指Offer--(5)重建二叉树 categories: 算法与数据结构 tags: 数据结构 题...

  • 剑指Offer(四)

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

  • 重建二叉树

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

  • 重建二叉树

    上牛客网做了一道剑指offer的算法题 重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设...

  • 剑指offer第二版-7.重建二叉树

    本系列导航:剑指offer(第二版)java实现导航帖 面试题7:重建二叉树 题目要求:根据二叉树的前序遍历和中序...

  • 【剑指Offer】07. 重建二叉树

  • go 重建二叉树

    这是剑指offer的一道题。 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍...

网友评论

      本文标题:【剑指offer】07重建二叉树

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