二叉树遍历

#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(BiTree T){
    int x=T->data; 
    printf("%d  ",x);
} 

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

//中序遍历
void InOrder(BiTree T){
    if(T!=NULL){
        InOrder(T->lchild);
        visit(T);
        InOrder(T->rchild);
    }
} 
//后序遍历
void PostOrder(BiTree 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;
}

 

posted @ 2023-09-09 21:45  CherriesOvO  阅读(14)  评论(0编辑  收藏  举报