先序遍历只能输出头一个字母
来源:百度知道 编辑:UC知道 时间:2024/06/11 19:23:36
#include<stdio.h>
#include<malloc.h>
struct BiTree
{
int data;
struct BiTree *lchild;
struct BiTree *rchild;
};
BiTree * CreateBiTree(BiTree *T)
{
char ch=NULL;
scanf("%c",&ch);
if(ch=='#')
T=NULL;
else
{
T=(BiTree *)malloc(sizeof(BiTree));
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return T;
}
void preorder(BiTree *T)
{ if (T!=NULL)
printf("%c",T->data);
preorder(T->lchild);
preorder(T->rchild);
}
void main( )
{
BiTree * T;
printf("按先序序列输入结点\n");
preorder(CreateBiTree(T)
#include<malloc.h>
struct BiTree
{
int data;
struct BiTree *lchild;
struct BiTree *rchild;
};
BiTree * CreateBiTree(BiTree *T)
{
char ch=NULL;
scanf("%c",&ch);
if(ch=='#')
T=NULL;
else
{
T=(BiTree *)malloc(sizeof(BiTree));
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return T;
}
void preorder(BiTree *T)
{ if (T!=NULL)
printf("%c",T->data);
preorder(T->lchild);
preorder(T->rchild);
}
void main( )
{
BiTree * T;
printf("按先序序列输入结点\n");
preorder(CreateBiTree(T)
你的CreateBiTree的参数有问题。这里需要的是BiTree的指针的引用,而不是指针本身。 你可以用1234##5###67##8##测试一下。
#include<stdio.h>
#include<malloc.h>
typedef struct BiTree
{
int data;
struct BiTree *lchild;
struct BiTree *rchild;
}BiTree, *pBiTree;
BiTree* CreateBiTree( pBiTree &T )
{
char ch=NULL;
scanf("%c",&ch);
if(ch=='#')
T=NULL;
else
{
T=(BiTree*)malloc(sizeof(BiTree));
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return T;
}
void preorder(BiTree *T)
{
if (T!=NULL)
{
printf("%c",T->data);
preorder(T->lchild);
preorder(T->rchild);
}
}
void main( )
{
BiTree *T;
printf("按先序序列输入结点\n");
preorder( CreateBiTree( T ) );
printf("\n");
}