新学的知识,但是看不懂代码,求教
#include<stdio.h>#include<stdlib.h>
typedef char ElemType;
typedef struct BNode
{
ElemType data;
struct BNode *lchild;
struct BNode *rchild;
}BTNode;
typedef BTNode* BinTree;
BinTree CreateBT()
{
BTNode *p,*q;
int i,j;
ElemType x;
BTNode *ptr[20];
BinTree root=NULL;//定义根指针,同时也是树的初始化
printf("\n i,x=");
scanf("%d%c",&i,&x);//输入第一个元素和第一个值。
while((i!=0)&&(x!=0))
{
q=(BTNode*)malloc(sizeof(BTNode));//申请新的结点
q->data=x;
q->lchild=NULL;
q->rchild=NULL;
ptr[i]=q;// ?
if(i==1)
root=q;
else//计算子树的位置。偶数为左子树。奇数为右子树
{
j=i/2;
if((i%2)==0)
ptr[j]->lchild=q;
else
ptr[j]->rchild=q;
}
printf("\n i,x=");
scanf("%d%c",&i,&x);
}
return root;
}
void PreOrder(BinTree root)
{
if(root!=NULL)
{
printf("%c",root->data);
PreOrder(root->lchild);
PreOrder(root->rchild);
}
}
void InOrder(BinTree root)
{
if(root!=NULL)
{
InOrder(root->lchild);
printf("%c",root->data);
InOrder(root->rchild);
}
}
void PostOrder(BinTree root)
{
if(root!=NULL)
{
PostOrder(root->lchild);
PostOrder(root->rchild);
printf("%c",root->data);
}
}
void main()
{
BinTree root;
root=CreateBT();
printf("先序序列:");
PreOrder(root);
printf("\n");
printf("中序序列:");
InOrder(root);
printf("\n后序序列:");
PostOrder(root);
printf("\n");
}
能不能给解释一下这个代码?刚开始学树,只学慨念没学代码,实在看不明白,特别疑惑的是结点与结点之间怎么连接的?请帮忙翻译下吧,尽可能详细点!!谢谢!!!!