鱼C论坛

 找回密码
 立即注册
查看: 2720|回复: 1

树的孩子兄弟表示法的层序遍历问题

[复制链接]
发表于 2018-11-23 08:47:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题,我写了2个创建树的函数,具体问题是:如果手动输入信息的话,遍历就没有问题,而如果使用数组模仿输入创建树的话,就会有很多看不懂的错误,而且有个神奇的现象,两次毫无变化的编译后,输出的结果竟然不一样- =。附上代码,求大神指教。
//这个是手动输入树
<void create_CBtree(cbNode* cb)
{
    if((*cb) == nullptr)
        init_CBtree(cb);

    int length = 0;
    char* tmpIn = new char[255];
    cin.getline(tmpIn,255);
    length = get_length_charM(tmpIn);


    if(length == 0)
    {
        (*cb) = nullptr;
        return;
    }


    (*cb)->dt->name = new char[length+1];

    for(int i = 0;i < length;i++)
      (*cb)->dt->name[i] = tmpIn[i];

    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[16] = {'A','B','D','#','E','#','#','C','F','#','G','#','#','#','#'};
void create_CBtree_auto(cbNode* cb)
{

      if(imitate[imitate_index] == '#')
      {
            (*cb) = nullptr;
            imitate_index++;
             return;
      }
      init_CBtree(cb);
      (*cb)->dt->name = new char[2];
      (*cb)->dt->name[0] = imitate[imitate_index];
      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;
>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-11-23 08:54:40 | 显示全部楼层
好吧我知道那里错误了- =,因为在自动输入函数的空值判断之后未给传入的结点分配内存- =导致错误- =,谢谢大家了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 16:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表