数据结构:根据中序序列和先序序列建二叉树算法

引例 我们可以简单分析一下如何通过先序序列和中序序列建立二叉树
引例 我们可以简单分析一下如何通过先序序列和中序序列建立二叉树
已知中序序列和先序序列 我们如何设计算法 树的算法基本离不开递归 整棵树可分为左子树 根 右子树 左右子树同样可以分为如上结构 我们只需要改变调用函数时传入的参数 参数分析如图
已知中序序列和先序序列 我们如何设计算法 树的算法基本离不开递归 整棵树可分为左子树 根 右子树 左右子树同样可以分为如上结构 我们只需要改变调用函数时传入的参数 参数分析如图

Void Crtbt(T,pre[],ino[],ps,is,n){
	/*根据先序和中序序列建立二叉树递归算法 
	传入参数为:根节点 先序序列 中序序列 先序序列第一个结点 
	中序序列第一个结点 二叉树节点个数 */
	if(n==0)
		T==NULL;//空树
	else{ 
		k=search(ino,pre[ps]);//查找根结点在中序序列的位置
		if(k==-1)
			T==NULL;//根节点不存在 序列错误
		else{
			T=(Bitnode*)malloc(sizeof(Bitnode));//申请内存给根结点
			T->date=pre[ps];//根结点的值域即为先序序列第一个结点
			if(k==is)
				T->lchild=NULL;//左子树为空
			else
				crtbt(T->lchild,pre[],ino[],ps+1,is,k-is);
				//传入左子树相关参数 
			if(k==is+n-1)
				T->rchild=NULL;//右子树为空
			else
				crtbt(T->rchild,pre[],ino[],ps+1+(k-is),k+1,n-(k-is)-1); 
				//传入右子树相关参数 
		} 
	} 
}

这样算法就设计好啦~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值