请教高手,一个c++的二叉树表问题!
#include <iostream> using namespace std;
struct Triple{
char F;
char C;
char D;
};
Triple data[9]={{'^','A','L'},{'A','B','L'},{'A','C','R'},{'B','D','L'},{'C','
E','L'},
{'C','F','R'},{'D','G','R'},{'F','H','L'},{'^','^','L'}};
struct Tree{
Tree *lchild,*rchild;
char c;
};
Tree *p=NULL;Tree *q=NULL;
void Find(Tree* &p)
{
int i;
for (i=0;i<9;i++)
{
if(p->c==data[i].F)
{
if(data[i].D=='L')
{
p->lchild=new Tree;
p->lchild->c=data[i].C;
p->lchild->lchild=NULL;
p->lchild->rchild=NULL;
Find(p->lchild);
}
if(data[i].D=='R')
{
p->rchild=new Tree;
p->rchild->c=data[i].C;
p->rchild->lchild=NULL;
p->rchild->rchild=NULL;
Find(p->rchild);
}
}
}
}
void Create(Tree* &p)
{
int i=0;
if(data[i].C=='A')
{
p=new Tree;
p->c=data[i].C;
p->lchild=NULL;p->rchild=NULL;
Find(p);
}
}
void Inorder(Tree* &p)
{
p=q;
if(p)
{
Inorder(p->lchild);
cout<<p->c<<'\t';
Inorder(p->rchild);
}
}
int main()
{
Create(p);
Inorder(p);
return 0;
}
问题补充:进行逐步调试时p->c=data[i].C; 这一句不能进行,是不是建立动态结构体时
要进行初始化?如果是,要怎么写啊