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

    题目描述

    输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
    /**
     * Definition for binary tree
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {//通过两个数组进行二叉树的重建
            public TreeNode reConstructBinaryTree(int [] pre,int [] in) {
            TreeNode root=binTree(pre,0,pre.length-1,in,0,in.length-1);
            return root;//因为TreeNode节点是val要返回一个整形数组。
        }
        private TreeNode binTree(int[] pre,int startPre,int endPre,int[] in,int startIn,int endIn){
            if(startPre>endPre||startIn>endIn)//startPre是前序遍历的下标
                return null;
                TreeNode root=new TreeNode(pre[startPre]);//pre[startPre]得到根的值,建立根树。
                
                    for(int i=startIn;i<=endIn;i++){//根节点的值可能等于endIn(中序遍历尾值)
                        if(in[i]==pre[startPre]){
                          root.left=binTree(pre,startPre+1,startPre+i-startIn,in,startIn,i-1);//i-startIn指的是在中序数组中当前根节点的偏移距离
                          root.right=binTree(pre,i-startIn+startPre+1,endPre,in,i+1,endIn);
                        }
                    }
                        return root;               
            }
    }    
  • 相关阅读:
    Modernizr.js:为HTML5和CSS3而生!
    liunx 安装 phpstudy
    php 实现无限极分类
    网站邮箱端口
    android studio svn 创建分支
    卡在 构建 gradle 项目信息
    android 地图
    IllegalArgumentException: Unmatched braces in the pattern.
    软件设置开机启动
    输入网络凭据
  • 原文地址:https://www.cnblogs.com/yunianzeng/p/11148104.html
Copyright © 2011-2022 走看看