您的位置:首页 > 职场人生

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

2016-06-03 14:14 260 查看

题目

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

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息