请教二叉树
我的二叉树哪儿出问题了!高手指点下啊!数据结构初学者。
#include<iostream>
#include<malloc.h>
using namespace std;
typedef struct node
{
char ch;
struct node *lchild,*rchild;
}BiTNode,*BiTree;
int main()
{
void create(BiTree t);
void preorder(BiTree t);
BiTree tree;
tree=(BiTree)malloc(sizeof(BiTNode));
create(tree);
preorder(tree);
return 0;
}
void create(BiTree &T)
{
char cc;
scanf("%c",&cc);
if(cc==' ') T=NULL;
else
{
T=(BiTree)malloc(sizeof(BiTNode));
if(T)
T->ch=cc;
create(T->lchild);
create(T->rchild);
}
}
void preorder(BiTree t)
{
if(t)
{
printf("%c",t->ch);
preorder(t->lchild);
preorder(t->rchild);
}
}
[解决办法]
参考答案: 你要先定义对象实例,即变量申明,再调用你的函数!
[解决办法]
#include<iostream>
#include<malloc.h>
using namespace std;
typedef struct node
{
char ch;
struct node *lchild,*rchild;
}BiTNode,*BiTree;
void create(BiTree &t);
void preorder(BiTree t);
int main()
{
BiTree tree;
tree=(BiTree)malloc(sizeof(BiTNode));
create(tree);
preorder(tree);
return 0;
}
void create(BiTree &T)
{
char cc;
scanf("%c",&cc);
if(cc==' ') T=NULL;
else
{
T=(BiTree)malloc(sizeof(BiTNode));
if(T)
T->ch=cc;
create(T->lchild);
create(T->rchild);
}
}
void preorder(BiTree t)
{
if(t)
{
printf("%c",t->ch);
preorder(t->lchild);
preorder(t->rchild);
}
}
把create preorder 函数放到main函数前面;主要问题是你声明的 create函数的参数和实现时的不同,要注意函数的参数要前后一致。
[解决办法]
除了声明函数的&外,在void create(BiTree &T)函数
的scanf("%c",&cc)语句后面加上一个getchar();语句。