数据结构 c 二叉树的建立和遍历 兄弟刚开始学 有点棘手 请各位多指教

来源:百度知道 编辑:UC知道 时间:2024/06/04 07:04:02
#include<stdio.h>
#define NULL 0
#define LEN sizeof(struct tree)

struct tree
{
int data;
struct tree *ltree;
struct tree *rtree;
};

struct tree *creatTree()
{
struct tree *Tree;
Tree=(struct tree *)malloc(LEN);
scanf("%d",&Tree->data);
if(Tree->data)
{
creatTree(Tree->ltree);
creatTree(Tree->rtree);
}
if(Tree->data==0)
free(Tree);
return Tree;
}

struct tree *printTree(struct tree *Tree)
{
if(Tree)
{
printf("%d",Tree->data);
printTree(Tree->ltree);
printTree(Tree->rtree);
}
}

main()
{
struct tree *mtree;
mtree=creatTree();
printTree(mtree);
getch();
}
输出的是乱码 优点棘手

改成如下就对了
#define NULL 0
#define LEN sizeof(struct tree)

struct tree
{
int data;
struct tree *ltree;
struct tree *rtree;
};

struct tree *creatTree(struct tree **Tree)
{
//struct tree *Tree;
*Tree=(struct tree *)malloc(LEN);
scanf("%d",&(*Tree)->data);
if((*Tree)->data)
{
creatTree(&(*Tree)->ltree);
creatTree(&(*Tree)->rtree);
}
if((*Tree)->data==0)
{
(*Tree)->ltree = NULL;
(*Tree)->rtree = NULL;
}
return (*Tree);
}

void printTree(struct tree *Tree)
{
if(Tree)
{
printf("%d",Tree->data);
printTree(Tree->ltree);
printTree(Tree->rtree);
}
}

void main()
{
struct tree *mtree;
mtree=creatTree(&mtree);
printTree(mtree);
//getch();
}