0
로그 n 검색을 위해 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);
}
}
그리고 또 다른 기능은 다음과 같습니다 :
AVL 트리 내부 검색 기능은
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;
동일한 포인터 주소를 지정하지 마십시오. 또한 검색 (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;
}
};
searchNode에 대한 재귀 호출에서 반환 값을 처리하지 않습니다. – Sneftel