树的孩子兄弟表示法的层序遍历问题
如题,我写了2个创建树的函数,具体问题是:如果手动输入信息的话,遍历就没有问题,而如果使用数组模仿输入创建树的话,就会有很多看不懂的错误,而且有个神奇的现象,两次毫无变化的编译后,输出的结果竟然不一样- =。附上代码,求大神指教。//这个是手动输入树
<void create_CBtree(cbNode* cb)
{
if((*cb) == nullptr)
init_CBtree(cb);
int length = 0;
char* tmpIn = new char;
cin.getline(tmpIn,255);
length = get_length_charM(tmpIn);
if(length == 0)
{
(*cb) = nullptr;
return;
}
(*cb)->dt->name = new char;
for(int i = 0;i < length;i++)
(*cb)->dt->name = tmpIn;
cout<<"input eldest node : "<<endl;
create_CBtree(&((*cb)->eldest));
cout<<"input borther node : "<<endl;
create_CBtree(&((*cb)->borther));
delete tmpIn;
}>
//这个是基于一个数组自动进行
<static int imitate_index = 0;
char imitate = {'A','B','D','#','E','#','#','C','F','#','G','#','#','#','#'};
void create_CBtree_auto(cbNode* cb)
{
if(imitate == '#')
{
(*cb) = nullptr;
imitate_index++;
return;
}
init_CBtree(cb);
(*cb)->dt->name = new char;
(*cb)->dt->name = imitate;
imitate_index++;
create_CBtree_auto(&(*cb)->eldest);
create_CBtree_auto(&(*cb)->borther);
}>
//最后表结构体信息附上
<
//树的结点
typedef struct Data
{
int id;
char* name;
}*data;
typedef struct CBtree
{
data dt;
struct CBtree* eldest;
struct CBtree* borther;
}*cbNode;
//队列结点和队列
typedef struct QueueNode
{
cbNode cdt;
struct QueueNode* next;
}*queueNode;
typedef struct Queues
{
queueNode frontP;
queueNode rearP;
}*queues;
> 好吧我知道那里错误了- =,因为在自动输入函数的空值判断之后未给传入的结点分配内存- =导致错误- =,谢谢大家了。
页:
[1]