广度优先搜索树中遇到的实际问题,急切等待答案!!!
//下面是对树的节点定义
#define MAX_TREE_SIZE 100
struct PTNode
{TElemType data;
int parent;//双亲位置域
};
struct PTree
{
PTNode nodes[MAX_TREE_SIZE];
int n;//节点数
};
//构造空树
Status IniTree(PTree &T)
{T.n=0;//构造空树
return OK;
}
typedef struct
{
int num;
TElemType name;
}QElemType;//定义队列元素类型
//构造树(
Status CreateTree(PTree &T)
{
LinkQueue q;
QElemType p,qq;
int i=1,j,l;
char c[MAX_TREE_SIZE];//临时存放孩子结点数组
InitQueue(q);//初始化队列
printf("请输入根结点(字符型,空格为空): ");
scanf("%c%*c",&T.nodes[0].data);//根结点序号为0,%*c吃掉回车符
if(T.nodes[0].data!=Nil)//非空树
{T.nodes[0].paraent=-1//根结点无双亲
qq.name=T.nodes[0].data;
qq.num=0;
EnQueue(q,qq);//入队此节点
while(i<MAX_TREE_SIZE&&!=QueueEmpty(q))//数组队列不为空
{
DeQueue(q,qq);//出队一个结点
printf("请按长幼顺序输入结点%c的所有孩子: ",qq.name);
gets(c);
l=strlen(c);
for(j=0;<1;++)
{
T.nodes[i].data=c[j];
T.nodes[i].parent=qq.num;
p.name=c[j];
p.num=i;
EnQueue(q,p);//入队此节点
i++;
}
}
if(i>MAX_TREE_SIZE)
{printf"结点数超过数组容量\n")
exit(OVERFLOW);
}
T.n=i;
}
else
T.n=0;
return OK;
}
下面需要用广度优先方法遍历树,得到记录每层节点个数的一维数组G[level],和记录包含每一层具体节点的二维数组CJ[M,M],我就不会了,望高手给点建议
int level;
int G[N];
int GJ[M,M];