题解 | #重建二叉树#

重建二叉树

http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6

知识点:前序遍历,中序遍历,二叉树的构造

数据结构课本里使用c++版本写的,这里用java版本仿了一遍

import java.util.*;

public class Solution {

public TreeNode createByPreMid(int[] pre,int[] mid,int ipre,int imid,int n){
    if(n==0)
        return null;
    TreeNode node = new TreeNode(0);
    node.val = pre[ipre];
    int i;
    for(i=0;i<n;++i){
        if(pre[ipre]==mid[imid+i])
            break;
    }
    node.left = createByPreMid(pre,mid,ipre+1,imid,i);
    node.right= createByPreMid(pre,mid,ipre+i+1,imid+i+1,n-i-1);
    return node;
}

public TreeNode reConstructBinaryTree(int [] pre,int [] vin) {
    int n = pre.length;
    return createByPreMid(pre,vin,0,0,n);
}

}

阿勇算法解集 文章被收录于专栏

对一些基础的,经典的题目的算法题解,每道题的题解尽量做到一题多解,举一反三。其中每一个题解中,若是参考了其他牛人的想法,我会备注出来。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务