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

    重建二叉树,由前序遍历和中序遍历创建二叉树。这个可以递归实现。先找到根节点,然后找到前序遍历的数组和中序遍历的数组,即可实现。

    public TreeNode constructBinary(int[] pre, int[] in){
            if(pre.length == 0 || in.length ==0 ||pre.length!=in.length){
                return null;
            }
            TreeNode root = new TreeNode(pre[0]);
            int i=0;
            int n = in.length;
            for(;i<n;i++){
                if(in[i] == pre[0]){
                    break;
                }
            }
            int[] leftPre = new int[i-1];
            int[] rightPre = new int[n-i];
            int[] leftIn = new int[i-1];
            int[] rightIn = new int[n-i];
            System.arraycopy(pre,1,leftPre, 0,i-1);
            System.arraycopy(pre, i+1, rightPre,0,n-i);
            System.arraycopy(in,0,leftIn, 0,i-1);
            System.arraycopy(in, i+1,rightIn,0,n-i);
            root.left = constructBinary(leftPre,leftIn);
            root.right = constructBinary(rightPre,rightIn);
            return root;
        }
  • 相关阅读:
    [转] Spring
    测试公式
    lexicalized Parsing
    MLN Alchemy
    Pedro domingos
    MLE & MAP
    Learning
    ProbCog mlnlearn的探索
    MLN 讨论 —— inference
    Mathjax与LaTex公式简介
  • 原文地址:https://www.cnblogs.com/yingpu/p/5813343.html
Copyright © 2011-2022 走看看