这是一种以非常简单的方式实现这一目标的数学方法:
使用语言:Java
`
/*
从给定的中序和前序遍历构造二叉树的算法。
以下是使用的术语:
i : 表示提供的中序数组
p : 表示提供的预购数组
beg1 : 中序数组的起始索引
beg2 : 前序数组的起始索引
end1 : 中序数组的结束索引
end2 : 前序数组的结束索引
*/
公共静态无效构造树(节点根,int[] i,int[] p,int beg1,int end1,int beg2,int end2)
{
if(beg1==end1 && beg2 == end2)
{
root.data = i[beg1];
}
else if(beg1<=end1 && beg2<=end2)
{
root.data = p[beg2];
int mid = search(i, (int) root.data);
root.left=new Node();
root.right=new Node();
constructTree(root.left, i, p, beg1, mid-1, beg2+1, beg2+mid-beg1);
System.out.println("Printing root left : " + root.left.data);
constructTree(root.right, i, p, mid+1, end1, beg2+1+mid-beg1, end2);
System.out.println("Printing root left : " + root.right.data);
}
}
`
您需要通过以下代码调用该函数:
int[] i ={4,8,7,9,2,5,1,6,19,3,18,10}; //Inorder
int[] p ={1,2,4,7,8,9,5,3,6,19,10,18}; //Preorder
Node root1=new Node();
constructTree(root1, i, p, 0, i.length-1, 0, p.length-1);
如果您需要更详细的代码解释,请在 cmets 中提及。我很乐意提供帮助:)。