满二叉树,已知先序序列pre,求后序序列post

#include <stdio.h>

#define  ElemType char

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;
        printf("l1+1      = %d,l1+half = %d,l2      = %d,l2+half-1 = %d\r\n",l1+1,l1+half,l2,l2+half-1);
        PretoPost(pre,l1+1,l1+half,post,l2,l2+half-1);
        printf("l1+half+1 = %d,h1      = %d,l2+half = %d,h2-1      = %d\r\n",l1+half+1,h1,l2+half,h2-1);
        PretoPost(pre,l1+half+1,h1,post,l2+half,h2-1); 
    }
}

#define MAXSIZE 50
ElemType *pre="ABCDEFG";
ElemType post[MAXSIZE];

int main(void) { 
    int i;
    PretoPost(pre,0,6,post,0,6);
    printf("前序序列\r\n");
    puts(pre);
    printf("后序序列\r\n");
    
    for(i=0;i<=6;i++)
    	printf("%c",post[i]);
	return 0;
}

         A
    B          E
C        D   F    G

运行结果:

l1+1      = 1,l1+half = 3,l2      = 0,l2+half-1 = 2
l1+1      = 2,l1+half = 2,l2      = 0,l2+half-1 = 0
l1+1      = 3,l1+half = 2,l2      = 0,l2+half-1 = -1
l1+half+1 = 3,h1      = 2,l2+half = 0,h2-1      = -1
l1+half+1 = 3,h1      = 3,l2+half = 1,h2-1      = 1
l1+1      = 4,l1+half = 3,l2      = 1,l2+half-1 = 0
l1+half+1 = 4,h1      = 3,l2+half = 1,h2-1      = 0
l1+half+1 = 4,h1      = 6,l2+half = 3,h2-1      = 5
l1+1      = 5,l1+half = 5,l2      = 3,l2+half-1 = 3
l1+1      = 6,l1+half = 5,l2      = 3,l2+half-1 = 2
l1+half+1 = 6,h1      = 5,l2+half = 3,h2-1      = 2
l1+half+1 = 6,h1      = 6,l2+half = 4,h2-1      = 4
l1+1      = 7,l1+half = 6,l2      = 4,l2+half-1 = 3
l1+half+1 = 7,h1      = 6,l2+half = 4,h2-1      = 3
前序序列
ABCDEFG
后序序列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值