Ich bin neu in der Datenstruktur. Ich mache ein C++ - Programm zum Einfügen eines Elements in den binären Suchbaum. Das Programm kompiliert ohne irgendeinen Fehler, aber wenn ich das Programm laufe, nachdem ich die erste Eingabe n gegeben habe, hört das Programm auf zu arbeiten. Bitte helfen Sie mir, dieses Programm richtig zu machen.Einfügen in binäre Suchbaum (C++)
Mein Code folgt oben wie:
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
struct node{
int data;
struct node* left;
struct node* right;
};
struct node *root=NULL ,*par=NULL ,*pos=NULL,*save=NULL , *ptr=NULL ;
struct node* newNode(int data)
{
struct node* newnode= (struct node*)malloc(sizeof(struct node));
newnode->data=data;
newnode->right=NULL;
newnode->left=NULL;
return newnode;
}
void findpos(int data)
{
if(root==NULL)
{
par=NULL,pos=NULL;
return;
}
if(root->data==data)
{
par=NULL , pos=root;
return;
}
if(data<root->data)
{
save=root; ptr=root->left;
}
else{
save=root; ptr=root->right;
}
while(ptr!=NULL)
{
if(ptr->data==data)
{
par=save; pos=ptr;
return;
}
if(data<ptr->data)
{
save=ptr;
ptr=ptr->left;
}
else{
save=ptr;
ptr=ptr->right;
}
}
pos=NULL; par=save;
return;
}
void insert(int data)
{
findpos(data);
if(pos!=NULL)
{
return;
}
pos=newNode(data);
if(data<par->data)
par->left=pos;
else
par->right=pos;
return;
}
int main()
{
struct node *root= newNode(4);
root->left=newNode(3);
root->left->left=newNode(2);
root->right=newNode(6);
int n;
cin>>n;
insert(n);
cout<<pos->data; //just trying to see if it works
return 0;
}
Deklarieren Sie Variablen wann immer sie benötigt werden und zu viele wenn sonst Bedingung in der Funktion 'findpos()'. – Shravan40
Nur die Verwendung von 'cin' /' cout' macht dieses Programm nicht C++ – Slava
1. Zeichnen Sie den Baum, den Sie auf einem Blatt Papier bauen möchten. 2. Führen Sie das Programm mit dem Debugger aus, der mit Ihrer Entwicklungsumgebung geliefert wurde. 3. Gehen Sie das Programm mit dem Debugger durch, bis der Code von Ihren Erwartungen abweicht (dh er sieht nicht wie der Baum aus, den Sie in Schritt 1 gezeichnet haben). 4. Verwenden Sie den Debugger, um den Programmstatus zu untersuchen, um zu sehen, warum dies geschah. Eventuell mehrere Male laufen, um die Abweichung zurück zur Quelle zu verfolgen. – user4581301