Java:根据二叉树的前序,中序遍历构造二叉树
递归
直接上代码:
1 package BinaryTree; 2 3 import java.util.Arrays; 4 5 class BintryT{ 6 Object data; 7 BintryT lChild; 8 BintryT rChild; 9 BintryT(Object obj){ 10 this.data = obj; 11 } 12 } 13 14 public class CreateBT { 15 public static void main(String[] args) throws Exception{ 16 int [] pre = {34,59,56,445,8745,2,33,76}; 17 int [] in = {445,56,59,8745,34,33,2,76}; 18 //int [] pre = {1,2,4,7,3,5,6,8}; 19 //int [] in = {4,7,2,1,5,3,8,6}; 20 21 @SuppressWarnings("unused") 22 BintryT root = createTWith_pre_in(pre,in); 23 } 24 public static BintryT createTWith_pre_in(int[] pre,int[] in) throws Exception{ 25 if(pre.length==0||in.length==0){ 26 return null; 27 } 28 BintryT root = new BintryT(pre[0]); 29 for(int i=0;i<in.length;i++){ 30 if(pre[0]==in[i]){ 31 System.out.println(pre[0]); 32 root.lChild = (createTWith_pre_in(Arrays.copyOfRange(pre, 1, i+1),Arrays.copyOfRange(in, 0, i))); 33 root.rChild = (createTWith_pre_in(Arrays.copyOfRange(pre, i+1, pre.length),Arrays.copyOfRange(in, i+1, in.length))); 34 } 35 } 36 return root; 37 } 38 }
一点浩然气,千里快哉风!