• 重建二叉树


    时间限制:1秒 空间限制:32768K

    输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

     1  function TreeNode(x) {
     2     this.val = x;
     3     this.left = null;
     4     this.right = null;
     5 } 
     6 function reConstructBinaryTree(pre, vin)
     7 {
     8     // 只有一个节点时
     9     var roots;
    10     if (pre.length === 0) {
    11         return null;
    12     }
    13     if (pre.length === 1) {
    14         roots = new TreeNode(pre[0]);
    15         return roots;
    16     }
    17     roots = new TreeNode(pre[0]);
    18     var index = vin.indexOf(pre[0]);
    19     left_pre = pre.slice(1,index+1);
    20     left_vin= vin.slice(0,index);
    21     roots.left = reConstructBinaryTree(left_pre,left_vin);
    22     right_pre = pre.slice(index+1);
    23     right_vin = vin.slice(index+1);
    24     roots.right = reConstructBinaryTree(right_pre, right_vin);
    25     return roots;
    26 }

    tips :最开始以为传入的pre和vin是对象,打印了一下是数组。返回的一定要是TreeNode的对象,不然后台没法处理。

    emmm......递归建树,貌似。。。没什么好说的~

  • 相关阅读:
    golang 反射和利用反射取结构体值
    golang 实现Lru
    跨域
    JS原型链
    cookie 、sessionStorage与localStorage的区别
    计算真实div盒子的宽度和高度
    div水平垂直居中
    清除浮动的几种方法
    JS中for循环和定时器的小问题
    转换字符串和转换数字类型
  • 原文地址:https://www.cnblogs.com/zou20134585/p/8651604.html
Copyright © 2020-2023  润新知