Я внедрял дерево для компании, которую мне нужно было связать с деревом AVL для поиска по журналам.
Функция поиска внутри дерева AVL:
node* searchNode(string S, node* root) //(S,root)
{
if (root->Name == S)
{
if (root->present == 1)
{
cout<<"root found"<<endl;
cout<<root<<endl;
return root;
}
else
{
cout<<"not found"<<endl;
return NULL;
}
}
else if (S > root->Name)
{
cout<<"search shifted right"<<endl;
searchNode(S, root->right);
}
else
{
cout<<"search shifted left"<<endl;
searchNode(S,root->left);
}
}
И еще одна функция:
node* search(string S)
{
cout<<"started search"<<endl;
node *searchResult;
searchResult = companyTree.searchNode(S,companyTree.root);
cout<<searchResult<<endl;
cout<<"finished search"<<endl;
return searchResult;
}
Проблема в том, что
cout<<root<<endl;
и
cout<<searchResult<<endl;
не давайте один и тот же адрес указателя. Более того, когда я пытаюсь получить доступ к любому элементу узла, возвращенному функцией search(S), я получаю ошибку сегментации. Что я должен делать?
Узел структуры:
struct node
{
string Name;
node *left;
node *right;
employee* self;
int present; //1 if present, 0 if absent
node()
{
Name= " ";
left= NULL;
right=NULL;
self=NULL;
present=-1;
}
};