После просмотра бинарного дерева появляется что-то бесполезное - PullRequest
0 голосов
/ 18 октября 2019

Я создал двоичное дерево. В качестве кивков я дал значения: 1,5,7,3,4,2. После добавления данных кивков и прохождения дерева в предварительном порядке, я получаю результат: 1-5-3-2-4-7-33-. Я не понимаю, откуда это 33. Кто знает, помогите пожалуйста.

#include <iostream>
using namespace std;
typedef struct nod
{
    int inf;
    nod *st, *dr;
}ARB;
ARB *tns;
void add(ARB * &r,int info)
{
    if(!r)
    {
        r=new ARB;
        r->inf=info;
        r->st=r->dr=0;
    }
    else
        if(info<r->inf) add(r->st,info);
        else if(info>r->inf) add(r->dr,info);
             else cout<<"\n exist\n";
}
void create(ARB* &r)
{
    int info,n,i;
    cout<<"nr of nods";cin>>n;
    for(i=1;i<=n;i++)
    {
        cout<<"nod: "<<i<<":";
        cin>>info;
        add(r,info);
    }
}
void rsd(ARB *r)
{
  if(r != NULL)
  {
    printf(" %d - ",r->inf);
    rsd(r->st);
    rsd(r->dr);
  }
}
int main()
{
    ARB *rad=0;
    int x;
    create(rad);
    add(rad,x);
    rsd(rad);

}

1 Ответ

0 голосов
/ 18 октября 2019

Компьютер добавляет дополнительный узел, потому что вы сказали ему:

ARB *rad=0;
int x;      // <-- unspecified value
create(rad);
add(rad,x); // <-- added to tree
rsd(rad);
...