哈哈哈,基金这两天没眼看了。现在看啥都是绿的。
题目:已知满二叉树的先序序列,求其后序序列。
算法思想:其实做这类题型的时候,咱们可以找一个具体的实例,来找相应的规律。
举个例子:
先根:1245367
后根:4526731
由例子可以很清晰的看出来,先根的第一个结点是后根的最后一个结点,先根序列除去根节点之后,
剩余的结点可以被平均分成两份(因为树是满二叉树),左边的一份是根节点的左子树,右边的一份为根节点的右子树。
在对左子树,右子树以同样的划分,形成递归函数。
其代码如下(c语言):
void PreToPost(ElemType pre[] ,int l1 , int h1 , ElemType post[] , int l2, int h2 ){
int half;
if(h1 >= l1){
post[h2] = pre[l1];
half = (h1 - l1)/2;
PreToPost(pre,l1+1,l1+half,post,l2,l2+half-1);
PreToPost(pre,l1+half+1,h1,post,l2+half,h2-1);
}
}