二叉树的二叉链表存储结构上得基本操作
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、二叉树的二叉链表存储结构
typedef struct btnode{
elemtype data;
struct btnode *lchild,*rchild;
}bitnode,*bitree;
二、基本操作的算法实现
1.建立二叉树
#define maxnum 20
void creat(bitnode *t){
bitnode *p[maxnum+1],*s;
int i,j,; char ch;
scanf(“%d,%c”,&i,&ch);
while(i!=0&&ch!=’#’){
s=(bitnode *)malloc(sizeof(bitnode));
s->data=ch; s->lchild=s->rchild=NULL; p[i]=s;
if(i==1) t=s;
else{
j=i/2;
if(i%2==0) p[j]->lchild=s;
else p[j]->rchild=s;}
scanf(“%d,%c”,&i,&ch); } }
2.先序遍历
void preorder(bitnode *t){ if(t){ printf(t->data);
preorder(t->lchild);
preorder(t->rchild);}
}
3.中序遍历
void inorder(bitnode *t){ if(t){ inorder(t->lchild);
printf(t->data);
inorder(t->rchild);}
}
4.后序遍历
void posrorder(bitnode *t){ if (t){ postorder(t->lchild);
postorder(t->rchild);
printf(t->data);}
}