设有一棵满二叉树(所有结点值均不同),已知其先序序列为pre,设计一个算法求其后序序列post

设有一棵满二叉树(所有结点值均不同),已知其先序序列为pre,设计一个算法求其后序序列post

对于一般二叉树,仅根据先序序列或后序序列,并不能确定另一个遍历序列,但对满二叉树,任意一个结点的左、右子树均含有相等的结点数,同时,先序序列的第一个结点作为后序序列的最后一个结点.递归实现,每一次递归的结果就是将先序序列的第一个结点放到后序序列的最后一个结点,直至这个二叉树的递归完成.

递归每棵树的左右子树,每一次递归完成都会将该子树的先序第一个结点放到后序的最后一个结点

在这里插入图片描述

void PreToPost(ElemType pre[],int low1,int high1,ElemType post[],int low2,int high2){
	int half;
	if(high1>=low1){
		post[high2] = pre[low1];
		half = (high1-low1)/2;
		PreToPost(pre,low1+1,low1+half,post,low2,low2+half-1);//转换左子树
		PreToPost(pre,low1+half+1,high1,post,low2+half,high2-1);//转换右子树
	}
}
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值