二叉树的创建与遍历

来源:互联网 发布:开淘宝店教学视频教程 编辑:程序博客网 时间:2024/05/17 16:00
#include<stdio.h>#include<malloc.h>typedef struct BitNode{    char data;    struct BitNode *lchild;  //左孩子    struct BitNode *rchild;  //右孩子}BitTree;/*****创建二叉树 ******/BitTree * CreateBitTree() {    BitTree *T=0;    char ch;    scanf("%c",&ch);    fflush(stdin);    if('#'==ch)    {        T=NULL;        return 0;    }    else    {        T=(BitTree *)malloc(sizeof(BitTree));        T->data=ch;        T->lchild=CreateBitTree();        T->rchild=CreateBitTree();          }     return T;}/*************先序遍历***************************/int PreOrderTraverse(BitTree *T){    if(T!=NULL)    {        printf("%c ",T->data);        PreOrderTraverse(T->lchild);        PreOrderTraverse(T->rchild);    }    return 0;}/*************中序遍历************************/int InOrderTraverse(BitTree *T){    if(T!=NULL)    {        InOrderTraverse(T->lchild);        printf("%c ",T->data);        InOrderTraverse(T->rchild);    }    return 0;}/**************后序遍历********************/int PostOrderTraverse(BitTree *T){    if(T!=NULL)    {        PostOrderTraverse(T->lchild);        PostOrderTraverse(T->rchild);        printf("%c ",T->data);    }    return 1;}int main(){    BitTree *p=0;    printf("请输入字符,以'#'结束");    p=CreateBitTree();    PostOrderTraverse(p);    return 0;}

原创粉丝点击