#include<stdlib.h>

//定义
typedef struct BiTNode{
	int data;	//数据域
	struct BiTNode *lchild,*rchild; 
}BiTNode,*BiTree;

//创建新节点 
bool createNode(BiTree &T,int value){
	T=(BiTNode *)malloc(sizeof(BiTNode));
	if(T==NULL)
		return false;
	T->data=value;
	T->lchild=NULL;
	T->rchild=NULL;
	return true;
} 

//访问结点 
void visit(BiTNode *T){
	int x=T->data; 
	printf("%d  ",x);
} 

//先序遍历
void PreOrder(BiTNode *T){
	if(T!=NULL){
		visit(T);
		PreOrder(T->lchild);
		PreOrder(T->rchild);
	}
} 

//中序遍历
void InOrder(BiTNode *T){
	if(T!=NULL){
		InOrder(T->lchild);
		visit(T);
		InOrder(T->rchild);
	}
} 
//后序遍历
void PostOrder(BiTNode *T){
	if(T!=NULL){
		PostOrder(T->lchild);
		PostOrder(T->rchild);
		visit(T);
	}
} 
int main(){
    BiTree T;
    createNode(T, 1);
    createNode(T->lchild, 2);
    createNode(T->rchild, 3);
    createNode(T->lchild->lchild, 4);
    createNode(T->lchild->rchild, 5);

    // 先序遍历二叉树
    printf("先序遍历结果为:");
    PreOrder(T);
    
    // 中序遍历二叉树
    printf("中序遍历结果为:");
    InOrder(T);
    
    // 后序遍历二叉树
    printf("后序遍历结果为:");
    PostOrder(T);

    return 0;
}


运行结果:

image.png