Я попытался реализовать BST следующим образом: . Созданная структура как NODE.it имеет два указателя влево и вправо и одно целое значение (данные).Реализация BST через структуру
#include<iostream>
#include<stdio.h>
using namespace std;
struct node
{
struct node*left;
struct node*right;
int data;
};
node* head1;
int bol=0;
void insert1(int x)
{
node* nodes=new node;
nodes->left=NULL;
nodes->right=NULL;
nodes->data=x;
if(bol==0)
{
head1=nodes;
bol=1;
}
else
{
node* ptr=head1;
while(ptr!=NULL)
{
if(x<=ptr->data)
{
ptr=ptr->left;
}
else
{
ptr=ptr->right;
}
}
ptr=nodes;
}
}
int main()
{
int n,m;
cout<<"Enter the size of first BST"<<endl;
cin>>n;
int arrayfirst[n];
for(int i=0;i<n;i++)
{
cin>>arrayfirst[i];
insert1(arrayfirst[i]);
}
cout<<head1->data<<endl;
cout<<head1->left->data<<endl;
//printPreorder(head1);
}
, но ошибка отображается, если я пытаюсь распечатать данные следующего узла в голову.
Заранее спасибо
Когда вы использовали отладчик, были ли правильные значения в указателях? –
Вы устанавливаете 'ptr = nodes', но вы должны фактически установить« left »или« right »родителя в узлы. Установка 'ptr' в' nodes' не изменяет указатели 'left' или' right' родителя. – user1952500