- 37
- 0
- 约5.82千字
- 约 6页
- 2017-08-17 发布于安徽
- 举报
由先序序列和中序序列建立二叉树建树:betree(T,i,j,length)
{
如果串长度length不为0
{ 定位值k=中序序列起始值j;
判断(中序序列定位值k==先序序列起始值i),若!=, 则定位值+1向后继续寻找;
当找到时,给树T申请空间,将先序序列起始值赋给树结点的数据域T-data;
然后计算出左子树结点数pos=定位值k-中序序列起始值j;
建左子树:递归调用建树函数betree(将树的左孩子传过去,左子树初始值+1,中序序列的定位值,pos);
建右子树:递归调用建树函数betree(将树的右孩子传过去,左子树初始值+1再+定位值,串长-定位值-1)
//这样递归建树就完成了
}否则 树赋空值;
}
///////////////////////////////////////////////////////////////////////
//由先序序列和中序序列建立二叉树
//start1是先序序列的起始位置,start2是中序序列的起始位置,
//len是先序序列长度
void CreateBiTree(int start1,int start2,int len,BiTree T)
{
int pos,len1;
if (len=0) T=NULL;
else
{ pos=start2; //记
原创力文档

文档评论(0)