zoukankan      html  css  js  c++  java
  • 重建二叉树

    时间限制: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......递归建树,貌似。。。没什么好说的~

  • 相关阅读:
    ha-wordy-Write-up
    HA: Infinity Stones-Write-up
    为什么k8s引入pod概念?
    vxlan 跨网段虚拟机迁移
    交换机配置
    Git四大组件(转)
    php-fpm
    docker容器中用户自定bridge网络与默认bridge网络之间的区别
    原型链
    'style-loader', 'css-loader'使用
  • 原文地址:https://www.cnblogs.com/zou20134585/p/8651604.html
Copyright © 2011-2022 走看看