使用扩展二叉树的方法建立二叉树

来源:互联网 发布:淘宝里怎么分享 编辑:程序博客网 时间:2024/05/20 20:45
/************************************************************************* *    > File Name: test.c    > Author: ma6174    > Mail: ma6174@163.com     > Created Time: Tue 19 Sep 2017 09:59:50 PM CST ************************************************************************/#include<stdio.h>#include<stdlib.h>#define ERROR 0#define OK    1typedef int Status;typedef char TElemType ;struct BiTNode{    TElemType data;    struct BiTNode *lchild, *rchild;};void CreateBiTree(struct BiTNode **T){    TElemType ch;    scanf("%c", &ch);     if(ch == '#')        *T = NULL;    else    {        *T = (struct BiTNode*)malloc(sizeof(struct BiTNode));        if(*T == NULL)            exit(EXIT_FAILURE);        (*T)->data = ch;//生成根节点        CreateBiTree(&(*T)->lchild);//构造左子树        CreateBiTree(&(*T)->rchild);  //构造右子树    }}struct BiTNode* CreateTree(void){    TElemType ch;    struct BiTNode *node = NULL;    scanf("%c", &ch);    if(ch == '#')        return NULL;    else    {        node = (struct BiTNode*)malloc(sizeof(struct BiTNode));        if(node == NULL)            exit(EXIT_FAILURE);        node->data = ch;//生成根节点        node->lchild = CreateTree();        node->rchild = CreateTree();        return node;    }}void PreOrderTraverse(struct BiTNode *tree){    if(tree == NULL)        return;    else    {        printf("%c ", tree->data);        PreOrderTraverse(tree->lchild);        PreOrderTraverse(tree->rchild);    }}int main(void){    struct BiTNode *tree = CreateTree();    //CreateBiTree(&tree);    PreOrderTraverse(tree);    printf("\n");    return 0;}
原创粉丝点击