重建二叉树

来源:互联网 发布:小型单片机项目外包网 编辑:程序博客网 时间:2024/06/08 20:17

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

 class TreeNode {      int val;      TreeNode left;      TreeNode right;      TreeNode(int x) { val = x; }  }public class ReConstructBinaryTree {/** * @param args */public TreeNode reConstructBinary(int [] pre,int [] in) {TreeNode root=new TreeNode(pre[0]);int len=pre.length;if(len==1){root.left=null;root.right=null;return root;}int rootval=root.val;      int i;      for(i=0;i<len;i++){          if(rootval==in[i])              break;      }    if(i>0)    {    int []pr=new int[i];    int []ino=new int[i];    for(int j=0;j<i;j++)    {    pr[j]=pre[j+1];    ino[j]=in[j];    }    root.left=reConstructBinary(pr,ino);    }    else    root.left=null;if(len-i-1>0){int []pr=new int[len-i-1];int []ino=new int[len-i-1];for(int j=i+1;j<len;j++){pr[j-i-1]=pre[j];ino[j-i-1]=in[j];}root.right=reConstructBinary(pr,ino);}elseroot.right=null;return root;}public static void main(String[] args) {// TODO Auto-generated method stub}}


原创粉丝点击