剑指offer-面试题6:重建二叉树

来源:互联网 发布:大月氏 知乎 编辑:程序博客网 时间:2024/06/18 08:05

题目

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。

public static TreeNode buildTree(int[] preOrder,             int start,int[] inOrder,int end,int length){         //参数验证        if(preOrder==null||preOrder.length==0        ||inOrder==null||inOrder.length==0||length<=0){            return null;        }        //建立子树根节点        int value=preOrder[start];        TreeNode root=new TreeNode(value);        //递归终止条件:子树只有一个节点        if(length==1){            return root;        }        //分拆子树的左子树和右子树        int i=0;        while(i<length){            if(value==inOrder[end-i]){                break;            }            i++;                    }    //建立子树的左子树  root.left=buildTree(preOrder,start+1,inOrder,end-1-i,length-1-i);  root.right=buildTree(preOrder,start+length-i,inOrder,end,i);  return root;}
0 0
原创粉丝点击