Это реализация двоичного дерева поиска, и я хочу знать, что с ней не так?
#include<iostream>
using namespace std;
struct node
{
int data;
node *left;
node *right;
};
class tree
{
node *root;
public:
tree()
{
root=NULL;
}
void insert(node *root,int key)
{
if(root==NULL)
{
root->data=key;
root->left=NULL;
root->right=NULL;
}
else if(key<root->data)
{
node *temp = new node;
if(root->left==NULL)
{
root->left=temp;
temp->left=NULL;
temp->right=NULL;
}
else
{
insert(root->left,key);
}
}
else
{
node *temp=new node;
if(root->right==NULL)
{
root->right=temp;
temp->left=NULL;
temp->right=NULL;
}
else
insert(root->right,key);
}
}
void search(node *root,int key)
{
if(root==NULL)
cout<<"Tree is Empty";
else if(root->data==key)
cout<<"Match Found";
else if(key<root->data)
search(root->left,key);
else
search(root->right,key);
}
node* getHead()
{
return root;
}
};
int main()
{
tree a;
a.insert(a.getHead(),5);
a.insert(a.getHead(),3);
a.insert(a.getHead(),9);
a.insert(a.getHead(),11);
a.insert(a.getHead(),7);
a.search(a.getHead(),11);
return 0;
}
Может быть, моя реализация имеет доступ к некоторой памяти, которую я не объявил. Я простосоздал функцию для вставки узла и функцию поиска, которая возвращает, если дерево пусто из соответствия найдено. Исправьте меня, что я делаю неправильно. Выходной результат в моем компиляторе g ++ - ошибка сегментации (Core Dumped).