二叉树遍历

发布时间 2023-09-09 21:45:40作者: CherriesOvO
#include<stdio.h>
#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;
}