/*************************************************************************
*
> 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;
}
使用扩展二叉树的方法建立二叉树
最新推荐文章于 2022-01-19 13:52:08 发布