#include
//定义二叉树的存储结构
struct BTNode
{
char data;
BTNode* lchild;
BTNode* rchild;
}BTNode;
void Ctree(struct BTNode* t,char A[],int i)
{
if(t!=NULL)
{
A[i]=t->data;
Ctree(t->lchild,A,i*2);
Ctree(t->rchild,A,i*2+1);
}
else
{
A[i]=' ';
}
}
int main(void)
{
//建立二叉链表存储结构的二叉树,以p1为根节点,p2,p3分别为p1的左右子树,p4为p3的左子树
struct BTNode p1,p2,p3,p4;
struct BTNode *t=&p1;
p1.data='a';
p2.data='b';
p3.data='c';
p4.data='d';
p1.lchild=&p2;
p1.rchild=&p3;
p2.lchild=NULL;
p2.rchild=NULL;
p3.lchild=&p4;
p3.rchild=NULL;
p4.lchild=NULL;
p4.rchild=NULL;
char A[20]={NULL}; //定义字符数组存储转换后的二叉树存储结构
Ctree(t,A,1); //调用上述转换算法
//显示结果
printf("以下是转换后数组的值:\n");
for(int i=1;i<20;i++)
{
if(A[i]!=NULL)
printf("A[%d]=%c\n",i,A[i]);
}
return 0;
}
建议你再画图理解一下,会比较容易理解