-
大小: 2KB文件類(lèi)型: .c金幣: 1下載: 0 次發(fā)布日期: 2021-05-15
- 語(yǔ)言: 其他
- 標(biāo)簽: 數(shù)據(jù)結(jié)構(gòu)??C語(yǔ)言??
資源簡(jiǎn)介
由中序和先序序列恢復(fù)二叉樹(shù)
由中序和后序序列恢復(fù)二叉樹(shù)
代碼片段和文件信息
#include
#include
#include
#define?maxsize?20
char?prelist[maxsize];
char?inlist[maxsize];
char?postlist[maxsize];
typedef?struct?node
{
char?data;
struct?node?*lchild*rchild;
}?bitree;
/*由中序和先序序列恢復(fù)二叉樹(shù)*/
bitree?*preintotree(char?*prechar?*inint?iint?jint?kint?l)
{
int?m;
bitree?*p;
p=(bitree*)malloc(sizeof(bitree));
p->data=*(pre+i);
m=k;
while(*(in+m)!=*(pre+i))
{
???m++;
}
if?(m==k)
{
???p->lchild=NULL;
}
else
{
???p->lchild=preintotree(preini+1i+m-kkm-1);
}
if?(m==l)
{
???p->rchild=NULL;
}
else
{
???p->rchild=preintotree(preini+m-k+1jm+1l);
}
return(p);
}
/*由中序和后序序列恢復(fù)二叉樹(shù)*/
bitree?*inposttotree(char?*inchar?*postint?iint?jint?kint?l)
{
int?m;
bitree?*p;
p=(bitree*)malloc(sizeof(bitree));
p->data=*(post+l);
m=i;
while(*(in+m)!=*(post+l))
{
???m++;
}
if?(m==i)
{
???p->lchild=NULL;
}
else
{
???p->lchild=inposttotree(inpostim-1kk+m-i-1);
}
if?(m==j)
{
???p->rchild=NULL;
}
else
{
???p->rchild=inposttotree(inpostm+1jk+m-il-1);
}
return(p);
評(píng)論
共有 條評(píng)論