二叉树的三种递归遍历

#include <stdio.h> 
#include <stdlib.h>
#define elemTpye int


typedef struct BitNode{
elemTpye data;
struct BitNode *lchild,*rchild;
}BitNode,*pBitNode;


void CreateBTree(pBitNode b){
b->data= 1;
b->lchild = (pBitNode)malloc(sizeof(BitNode));
b->rchild = (pBitNode)malloc(sizeof(BitNode));
b->lchild->data = 2;
b->lchild->lchild = (pBitNode)malloc(sizeof(BitNode));
b->lchild->lchild->data =4;
b->lchild->lchild->lchild =NULL;
b->lchild->lchild->rchild =NULL;

b->lchild->rchild = (pBitNode)malloc(sizeof(BitNode));
b->lchild->rchild->data =5;
b->lchild->rchild->lchild = NULL;
b->lchild->rchild->rchild = NULL;

b->rchild->data =3;
b->rchild->lchild = (pBitNode)malloc(sizeof(BitNode));
b->rchild->lchild->data =6 ;
b->rchild->lchild->lchild = NULL;
b->rchild->lchild->rchild = NULL;

b->rchild->rchild = NULL;
}


//读取节点的数据 
void displayData(pBitNode Node){
printf("%d ",Node->data);
}
//先序遍历 
void pretraverse(pBitNode T){
if(T){
displayData(T);
pretraverse(T->lchild);
pretraverse(T->rchild);
}
}
//中序遍历 
void intraverse(pBitNode T){
if(T){
intraverse(T->lchild);
displayData(T);
intraverse(T->rchild);
}
}
//后序遍历
void posttraverse(pBitNode T){
if(T){
posttraverse(T->lchild);
posttraverse(T->rchild);
displayData(T);
}

}




int main(){
pBitNode btree = (pBitNode)malloc(sizeof(BitNode));
CreateBTree(btree);
//先序遍历 
pretraverse(btree);
printf("\n");
//中序遍历 
intraverse(btree);
printf("\n");
//后序遍历 
posttraverse(btree);
printf("\n");
return 0;
}

猜你喜欢

转载自blog.csdn.net/yy_9117/article/details/80971173