我是C ++的初学者,需要帮助解决这个问题。 它是一个基于树形结构的简单创建,读取和打印程序。
问题是,当我打印树时,它会向我显示由数字和字母组成的奇怪信息。它可能无法读取正确的内存数据。 我写了一个递归的“创建”函数,它读取控制台输入并将它们添加到树结构中。 功能如下:
基本上,该功能可以检查左侧跟随者是否关闭,以及随后的关注者。
示例:像1-> root,2->左跟随者,3->右跟随者的树如下所示:1,2,0,0,3,0,0。前两个0分配NULL值节点“2”的跟随者,从而使函数返回到根和右分支。
更复杂的树,如:1->根,“左”,“左”,“左”,“左”,“4”,“左”,“4”,“3”,“3”,“3”。 “1”的权利; 7->左边的“3”,如下所示:1,2,4,0,5,0,0,0,3,7,0,0,0。
“read”函数读取left-> root-> right,其作用与“create”函数相同。
这是我的代码:
#include<iostream>
using namespace std;
struct nod
{
int info;
nod *left,*right;
} *tree;
nod * create()
{
int n;
nod*r;
cin>>n;
if(n==0)
return NULL;
r=new nod;
r->info=n;
r->left=create();
r->right=create();
return r;
}
void read(nod *r)
{
if(r)
{
read(r->left);
cout<<r<<" ";
read(r->right);
}
}
int main()
{
tree =new nod;
tree=create();
read(tree);
return 0;
}
输入如下:1,2,3,0,4,0,0,5,0,0,6,7,0,0,0。
感谢。
答案 0 :(得分:2)
我看到输出的唯一问题是你正在打印r
,这是一个指针。我认为你的意思是r->info
。