码迷,mamicode.com
首页 > 编程语言 > 详细

C语言描述-二叉树链式存储

时间:2019-10-26 21:06:42      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:建二叉树   ==   lse   node   元素   后序遍历   exit   with   int   

#include <stdio.h>
#include <stdlib.h>

typedef char TElemType;

typedef struct BiTNode
{
    TElemType data;    //数据
    struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;

/*构建二叉树*/
void CreateBiTree(BiTree *T)
{
    TElemType e;
    
    if ((e=getchar()) == '#')
    {
        *T = NULL;
    }
    else
    {
        *T = (BiTree) malloc(sizeof(BiTNode));
        if (!T)
        {
            exit(0);
        }
        (*T)->data = e;
        CreateBiTree(&(*T)->lchild);    //创建左子树
        CreateBiTree(&(*T)->rchild);    //创建右子树
    }
}

/*先序遍历*/
void PreOrderTraverse(BiTree T)
{
    if (T)
    {
        printf("%c ",T->data);
        PreOrderTraverse(T->lchild);
        PreOrderTraverse(T->rchild);
    }

}

/*中序遍历*/
void InOrderTraverse(BiTree T)
{
    if (T)
    {
        InOrderTraverse(T->lchild);
        printf("%c ",T->data);
        InOrderTraverse(T->rchild);
    }
}

/*后续遍历*/
void PostOrderTraverse(BiTree T)
{
    if (T)
    {
        PostOrderTraverse(T->lchild);
        PostOrderTraverse(T->rchild);
        printf("%c ",T->data);
    }
}

int main()
{
    BiTree T;
    printf("请输入元素,#表示空树:\n");
    CreateBiTree(&T);
    printf("先序遍历:");
    PreOrderTraverse(T);
    printf("\n中序遍历:");
    InOrderTraverse(T);
    printf("\n后序遍历:");
    PostOrderTraverse(T);
    printf("\n");
    
    return 0;
}
/* 测试
请输入元素,#表示空树:
AB##CD##EF##G##
先序遍历:A B C D E F G 
中序遍历:B A D C F E G 
后序遍历:B D F G E C A 
Program ended with exit code: 0
*/

C语言描述-二叉树链式存储

标签:建二叉树   ==   lse   node   元素   后序遍历   exit   with   int   

原文地址:https://www.cnblogs.com/zhulmz/p/11745381.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!