二叉树的序列化:即将一颗二叉树转化为一位数的过程
void LinkMakeAr(BtNode *ptr,ElemType *buff,int i);
void LinkCreateAr(BtNode *root,ElemType *buff,int n)
{
if(root == NULL || buff == NULL)
return;
for(int i = 0;i<n;++i)
{
buff[i] = END;
}
LinkMakeAr(root,buff,0);
}
void LinkMakeAr(BtNode *ptr,ElemType *buff,int i)
{
if(ptr != NULL)
{
buff[i] = ptr->data;
LinkMakeAr(ptr->leftchild,buff,i*2+1);
LinkMakeAr(ptr->rightchild,buff,i*2+2);
}
}二叉树的反序列化:即使用一维数组创建二叉树
BtNode * CreateAr(ElemType *ar,int i,int n);
BtNode * CreateTreeAr(ElemType *ar,int n)
{
if(NULL == ar || n < 1)
return NULL;
else
return CreateAr(ar,0,n);
}
BtNode * CreateAr(ElemType *ar,int i,int n)
{
BtNode *s = NULL;
if(i < n && ar[i] != END)
{
s = Buynode();
s->data = ar[i];
s->leftchild = CreateAr(ar,i*2+1,n);
s->rightchild = CreateAr(ar,i*2+2,n);
}
return s;
}
//二叉树的序列化中序遍历
void InOrder_Ar(ElemType *ar,int i,int n)
{
if(i<n && ar[i] != END )
{
InOrder_Ar(ar,i*2+1,n);
cout<<ar[i]<<" ";
InOrder_Ar(ar,i*2+2,n);
}
}
void InOrder_Ar(ElemType *ar,int n)
{
if(NULL == ar || n < 1)
return;
InOrder_Ar(ar,0,n);
cout<<endl;
}
二叉树_二叉树的序列化与反序列化
最新推荐文章于 2020-11-14 09:52:04 发布