主题:请高手进来看一下这道题有哪里错了??
题目:已知一棵二叉树的前序序列和中序序列分别
存于两个一维数组中,试编写算法建立该二叉树的二
叉链表。
算法:
void BuildBiTree(BiTree &bt, int ps, char *pre,
int is, char *ino, int n)
/* 当前要建立的子树bt的元素总数为n,*/
/* 元素在前序序列pre的起始位置为ps,*/
/* 元素在中序序列ino的起始位置为is */
{
int i,llen,rlen;
bt=(BiTree)malloc(sizeof(BiTNode));
if(!bt) exit(OVERFLOW);
bt->data=pre[ps];
for(i=is;ino[i]!=pre[ps];i++)
llen=i-is;
rlen=n-i;
if(llen)
BuildBiTree(bt->lchild,ps+1,pre,is,ino,llen);
if(rlen)
BuildBiTree(bt->rchild,ps+1+llen,pre,is+1+llen,ino,rlen);
}
存于两个一维数组中,试编写算法建立该二叉树的二
叉链表。
算法:
void BuildBiTree(BiTree &bt, int ps, char *pre,
int is, char *ino, int n)
/* 当前要建立的子树bt的元素总数为n,*/
/* 元素在前序序列pre的起始位置为ps,*/
/* 元素在中序序列ino的起始位置为is */
{
int i,llen,rlen;
bt=(BiTree)malloc(sizeof(BiTNode));
if(!bt) exit(OVERFLOW);
bt->data=pre[ps];
for(i=is;ino[i]!=pre[ps];i++)
llen=i-is;
rlen=n-i;
if(llen)
BuildBiTree(bt->lchild,ps+1,pre,is,ino,llen);
if(rlen)
BuildBiTree(bt->rchild,ps+1+llen,pre,is+1+llen,ino,rlen);
}