69,373
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct BiNode
{
char data;
struct BiNode *lchild,*rchild;
}BiNode,*BiTree;
void CreateBiTree(BiTree &T) /*这个地方加了个&符号,我在gcc下编译会出错,所以我想问下大家,
这个&符号有没有问题,当然我也查了下,发现很多C++代码里写了这个 */
{
char ch;
ch=getchar();
fflush(stdin); //这句话是我加的,我觉得有必要,不然输入有回车字符残留,程序会直接跳出
if(ch!='\n')
{
if(ch=='#') T=NULL;
else
{
T=(BiTree)malloc(sizeof(BiNode)); /*在这个地方动态分配内存空间,是否能起到给
传址的树分配,我测试了我觉得不能*/
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
}
void Xianxu(BiTree T)
{
if(T)
{
printf("%c",T->data);
Xianxu(T->lchild);
Xianxu(T->rchild);
}
}
int main()
{
BiTree T;
printf("请输入:\n");
CreateBiTree(T);
Xianxu(T);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct BiNode
{
char data;
struct BiNode *lchild,*rchild;
}BiNode,*BiTree;
BiTree initList()
{
BiTree head;
head = (BiTree)malloc(sizeof(BiNode));
if(head == NULL)
return NULL;
head->lchild = NULL;
head->rchild = NULL;
return head;
}
void CreateBiTree(BiTree T)
{
char ch;
//fflush(stdin);
ch=getchar();
fflush(stdin);
if(ch!='\n')
{
if(ch=='#')
{
T->data=NULL;
}
else
{
//T=(BiTree)malloc(sizeof(BiNode)); //另外开辟了内存空间赋值,所以无法打印
T->data=ch;
//printf("赋值为%c\n",T->data);
T->lchild=initList();
CreateBiTree(T->lchild);
T->rchild=initList();
CreateBiTree(T->rchild);
}
}
}
void Xianxu(BiTree T)
{
if(T!=NULL)
{
if(T->data!=NULL)
{
printf("%c\n",T->data);
Xianxu(T->lchild);
Xianxu(T->rchild);
}
}
}
int main()
{
BiTree T;
T=initList();
printf("请输入:\n");
CreateBiTree(T);
//printf("运行1\n");
//printf("赋值为%c\n",T->data);
Xianxu(T);
return 0;
}