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

    重建二叉树

      

      题目描述

      输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
      例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
     
      思路:前序遍历:中左右,中序遍历:左中右。
      则易知前序序列中第一个值为根节点root,
      1,遍历中序遍历找到在中序序列中的root的索引,则root左边的序列为左子树的中序遍历结果,root右边的序列为右子树的中序遍历结果。
      2,由第一步中可得到左子树中序遍历长度,在前序遍历中划出左子树的起止索引。
      3,同理可得前序遍历中右子树的起止索引
      4,递归执行上述过程。
     
      
     1 public class Solution {
     2     public TreeNode reConstructBinaryTree(int [] pre, int [] in) {
     3         TreeNode  root = help(pre,in,0,pre.length-1,0,in.length-1);
     4         return root;
     5     }
     6     private TreeNode help(int[] pre, int[] in,int prebeg,int preend,int inbeg,int inend ){
     7         if(prebeg>preend||inbeg>inend)
     8             return null;
     9         TreeNode root = new TreeNode(pre[prebeg]);
    10         int index = 0;
    11         for(int i=0;i<in.length;i++){   
    12             if(in[i]==pre[prebeg]){
    13                 index = i;
    14                 break;
    15             }
    16         }
    17         root.left = help(pre,in,prebeg+1,prebeg+(index-inbeg),inbeg,index-1);
    18         root.right = help(pre,in,prebeg+(index-inbeg)+1,preend,index+1,inend);
    19         return root;
    20     }
    21 }
      
  • 相关阅读:
    Spring Security -- 添加图形验证码(转载)
    Spring Security -- 自定义用户认证(转载)
    pandas agg 后降低df表层
    判断是否有人跟踪车辆的方案
    格隆汇笔记-黄勇演讲
    Mac mysql 忘记root密码的解决方法
    sql 同步2个表中的一个字段数据
    Linux下配置用msmtp和mutt发邮件
    spark StructType的应用,用在处理mongoDB keyvalue
    Idea2018旗舰版破解方法
  • 原文地址:https://www.cnblogs.com/ztqup666/p/9233325.html
Copyright © 2011-2022 走看看