#include<stdio.h>
#include<malloc.h>
typedef struct BiNode{
char data;
struct BiNode *lchild, *rchild;
}BiNode;
char getval(char *str){
static int i=0;
return str[i++];//*(str+i++);
}
void create(BiNode **bt,char *str){ //创建二叉树
char ch=getval(str);
if(ch=='#'){
(*bt)=NULL;
}else{
(*bt)=(BiNode *)malloc(sizeof(BiNode));
(*bt)->data=ch;
create(&((*bt)->lchild),str);
create(&((*bt)->rchild),str);
}
return;
}
void preOrder(BiNode *bt){ //前序遍历
if(bt==NULL){
printf("#");
return;
}
else{
printf("%c",bt->data);
preOrder(bt->lchild);
preOrder(bt->rchild);
}
}
void inOrder(BiNode *bt){ //中序遍历
if(bt==NULL){
printf("#");
return;
}
else{
inOrder(bt->lchild);
printf("%c",bt->data);
inOrder(bt->rchild);
}
}
void postOrder(BiNode *bt){ //后续遍历
if(bt==NULL){
printf("#");
return;
}
else{
postOrder(bt->lchild);
postOrder(bt->rchild);
printf("%c",bt->data);
}
}
int main(void){
char *str="ABE#L###DHM##I##J##";
BiNode * root;
create(&root,str);
preOrder(root);
printf("\n");
inOrder(root);
printf("\n");
postOrder(root);
return 0;
}
二叉树的创建及遍历(二级指针)
最新推荐文章于 2023-07-08 20:50:02 发布