#include <stdio.h>
#include <malloc.h>
struct BTNODE{
int data;
struct BTNODE *pLeftChild;
struct BTNODE *pRightChild;
};
struct BTNODE * creatBTnode(void);
void prTraverseBT(struct BTNODE *);
void miTraverseBT(struct BTNODE *);
void laTraverseBT(struct BTNODE *);
int main(void){
struct BTNODE *p = creatBTnode();
printf("前序遍历结果:\n");
prTraverseBT(p);
printf("中序遍历结果:\n");
miTraverseBT(p);
printf("后序遍历结果:\n");
laTraverseBT(p);
return 0;
}
struct BTNODE * creatBTnode(void){
BTNODE *A = (struct BTNODE *)malloc(sizeof(BTNODE));
BTNODE *B = (struct BTNODE *)malloc(sizeof(BTNODE));
BTNODE *C = (struct BTNODE *)malloc(sizeof(BTNODE));
BTNODE *D = (struct BTNODE *)malloc(sizeof(BTNODE));
BTNODE *E = (struct BTNODE *)malloc(sizeof(BTNODE));
BTNODE *F = (struct BTNODE *)malloc(sizeof(BTNODE));
A->data = 'A';
A->pLeftChild = B;
A->pRightChild = E;
B->data = 'B';
B->pLeftChild = C;
B->pRightChild = D;
C->data = 'C';
C->pLeftChild = C->pRightChild = NULL;
D->data = 'D';
D->pLeftChild = D->pRightChild = NULL;
E->data = 'E';
E->pLeftChild = NULL;
E->pRightChild = F;
F->data = 'F';
F->pLeftChild = F->pRightChild = NULL;
return A;
}
void prTraverseBT(struct BTNODE *bt){
if(bt != NULL){
printf("%c\n",bt->data);
if(bt->pLeftChild != NULL){
prTraverseBT(bt->pLeftChild);
//printf("%c\n",bt->pLeftChild->data); 这个加了是多余的。。。。
}
if(bt->pRightChild != NULL){
prTraverseBT(bt->pRightChild);
//printf("%c\n",bt->pRightChild->data); 一直调试错误
}
}
}
void miTraverseBT(struct BTNODE *bt){
if(bt != NULL){
if(bt->pLeftChild != NULL){
miTraverseBT(bt->pLeftChild);
}
printf("%c\n",bt->data);
if(bt->pRightChild != NULL){
miTraverseBT(bt->pRightChild);
}
}
}
void laTraverseBT(struct BTNODE *bt){
if(bt != NULL){
if(bt->pLeftChild != NULL){
laTraverseBT(bt->pLeftChild);
}
if(bt->pRightChild != NULL){
laTraverseBT(bt->pRightChild);
}
printf("%c\n",bt->data);
}
}
链式二叉树
最新推荐文章于 2024-08-02 17:06:55 发布