满二叉树已知先序,求后序。

哈哈哈,基金这两天没眼看了。现在看啥都是绿的。



题目:已知满二叉树的先序序列,求其后序序列。

算法思想:其实做这类题型的时候,咱们可以找一个具体的实例,来找相应的规律。

举个例子:

先根: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);
    }
}

 

 

 

 

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值