您的位置:首页 > 其它

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

2017-09-20 13:26 288 查看
/*************************************************************************
*
> 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    1

typedef 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二叉树