C++ 从文件重建树

C++ 从文件重建树,c++,C++,我在连接树的节点时遇到问题。在我的程序中,先执行函数read(),然后执行load()函数。在read()函数中,来自外部文件的所有数据将存储在数组中,然后在load()函数中重建。变量dat和i已全局声明。我的问题出在load()函数上。非常感谢您的帮助。顺便说一句,我在外部文件中的数据是按顺序排列的,我使用“#”表示空节点 void read() { string dat1; fstream file; file.open("data.txt", ios::in);

我在连接树的节点时遇到问题。在我的程序中,先执行函数
read()
,然后执行
load()
函数。在
read()
函数中,来自外部文件的所有数据将存储在数组中,然后在
load()
函数中重建。变量
dat
i
已全局声明。我的问题出在
load()
函数上。非常感谢您的帮助。顺便说一句,我在外部文件中的数据是按顺序排列的,我使用“#”表示空节点

void read()
{
    string dat1;
    fstream file;
    file.open("data.txt", ios::in);
    do
    {
       getline(file,dat1);
       dat[i]=dat1;
       i++;
    }while(!file.eof());
    file.close();
}

void load(node *root,int index)
{

    node *nNode;
    nNode=(node*)malloc(sizeof(node));
    nNode->yes=NULL;
    nNode->no=NULL;

    nNode->data=dat[index];

    if(index<i)
    {
        if(nNode->data!="#")
        {
            root=nNode;
            load(root->yes,index+1);
            load(root->no,index+1);
        }
        else
        {
            root=NULL;
            return;
        }
    }
}
void read()
{
字符串dat1;
流文件;
打开(“data.txt”,ios::in);
做
{
getline(文件,dat1);
dat[i]=dat1;
i++;
}而(!file.eof());
file.close();
}
无效加载(节点*根,整数索引)
{
节点*nNode;
nNode=(node*)malloc(sizeof(node));
nNode->yes=NULL;
nNode->no=NULL;
nNode->data=dat[索引];
如果(索引数据!=“#”)
{
根=nNode;
加载(根->是,索引+1);
加载(根->否,索引+1);
}
其他的
{
root=NULL;
返回;
}
}
}

好吧,一个问题是,你从来没有在
load()
中实际增加
索引。另一个问题是,您也从未将root->yes或root->no分配给任何对象。而是指定传递值参数
root
。也许你也希望这是一个参考

您可能想要更像:

// note that root and index are now pass-by-reference
void load(node &*root,int &index)
{
    ...
        index++;
        load(root->yes,index);
        index++;
        load(root->no,index);
    ...
}

你什么意思?“我的问题在加载函数上”它被窃听了吗?若然,如何处理;;它编译吗?如果没有,则会出现什么错误。它会编译,但节点未连接。对不起,我的问题。