2014-09-12 7 views
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; 
    } 
}; 
+0

searchNode에 대한 재귀 호출에서 반환 값을 처리하지 않습니다. – Sneftel

답변

0

추가 반환.

희망 사항.