2018-08-02 二叉树遍历

#include
#include
//二叉树的存储结构
typedef struct BiNode  
{
    char data;
    struct BiNode *left;
    struct BiNode *right;
}BiNode ,*BiTree;

//创建一棵二叉树
void CreateTree(BiTree * T1)
{
    char ch;//树中的结点数
    
    scanf_s("%c",&ch);
    if ( ch == '#')
        *T1= NULL;
    else
    {
        *T1 = (BiTree)malloc(sizeof(BiNode));
         (*T1)->data = ch  ;       //根结点
        CreateTree(&(*T1)->left);//创建左子树
        CreateTree(&(*T1)->right);//创建右子数
    }
}
//先序遍历二叉树
void PreOrder(BiTree T1)
{
    if (T1 == NULL)
        return;
    printf("%c", T1->data);//先序访问根节点
    PreOrder(T1->left);    //先序访问左子树
    PreOrder(T1->right);   //先序访问右子树
}

//中序遍历二叉树
void InOrder(BiTree T2)
{
    if (T2 == NULL)
        return;
    InOrder(T2->left);      //中序访问左子树
    printf("%c", T2->data); //中序访问根结点
    InOrder(T2->right);     //中序访问右子树
}
//后序遍历二叉树
void PostOrder(BiTree T3)
{
    if (T3 == NULL)
        return;
    PostOrder(T3->left);
    PostOrder(T3->right);
    printf("%c",T3->data); 
}
void main()
{
    BiTree T;
    T = (BiTree)malloc(sizeof(BiNode));
    printf("创建一个二叉树,#代表空树\n");
    CreateTree(&T);
    printf("先序遍历的结果为\n");
    PreOrder(T);
    printf("中序遍历的结果为\n");
    InOrder(T);
    printf("后序遍历的结果为\n");
    PostOrder(T);
    system("pause");
}

你可能感兴趣的:(2018-08-02 二叉树遍历)