题解 | #重建二叉树#
重建二叉树
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);
}
}
阿勇算法解集 文章被收录于专栏
对一些基础的,经典的题目的算法题解,每道题的题解尽量做到一题多解,举一反三。其中每一个题解中,若是参考了其他牛人的想法,我会备注出来。