打印树显示奇怪的字符

时间:2013-05-30 12:47:08

标签: c++ tree

我是C ++的初学者,需要帮助解决这个问题。 它是一个基于树形结构的简单创建,读取和打印程序。

问题是,当我打印树时,它会向我显示由数字和字母组成的奇怪信息。它可能无法读取正确的内存数据。 我写了一个递归的“创建”函数,它读取控制台输入并将它们添加到树结构中。 功能如下:

  1. 读取控制台输入;
  2. 如果输入为null则返回NULL;
  3. 否则将输入分配给节点值(在本例中为“info”);
  4. 函数“自称”并从左向右(向左分支,然后到根,然后向右分支)。
  5. 基本上,该功能可以检查左侧跟随者是否关闭,以及随后的关注者。

    示例:像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。

    感谢。

1 个答案:

答案 0 :(得分:2)

我看到输出的唯一问题是你正在打印r,这是一个指针。我认为你的意思是r->info