2014-10-11 7 views
-2

두 개의 함수를 만들었습니다. 하나는 빨강 검정 트리에서 가장 작은 키를 찾아 반환하고 다른 하나는 노드의 키를 입력으로 사용하여 특정 노드에 대한 포인터를 반환합니다. 이 함수는 가장 높은 키와 가장 낮은 키를 가진 노드를 제외한 모든 노드에서 정상적으로 작동합니다. 프로그램이 작동을 멈추고 C4716 경고를 제공합니다. 키가 입니다. int array [] = {50, 26, 45, 34, 23, 78, 84, 93, 14, 16, 100, 57, 62};경고 C4715 : 모든 제어 경로가 값을 반환하지 않습니다. C++

int Tree::findsmallest() 
{ 
return findsmallestprivate(root); 
} 

int Tree::findsmallestprivate(node* ptr) 
{ 
if (root != NULL) 
{ 
    if (ptr->left != NULL) 
    { 
     findsmallestprivate(ptr->left); 
    } 
    else 
    { 
     return ptr->key; 
    } 
} 
else 
{ 
    cout << "There was no tree" << endl; 
    return -1; 
} 
} 
Tree::node* Tree::returnnode(int key) 
{ 
return returnnodepri(key, root); 
} 
Tree::node* Tree::returnnodepri(int key, node* ptr) 
{ 
    if (ptr->key == key) 
    { 
     return ptr; 
    } 
    else if (ptr->key < key) 
    { 
     returnnodepri(key, ptr->right); 
    } 
    else if (ptr->key > key) 
    { 
     returnnodepri(key, ptr->left); 
    } 
else 
{ 
    return NULL; 
} 
} 

답변

1

if (ptr->left != NULL) 컴파일러에서 말한 것처럼 값을 반환하지 않습니다. 값을 반환해야합니다.

+0

맙소사. 감사합니다! –

0

findsmallestprivate에서 : 조건 ptr->left != NULL이 보유하고있는 경우

, 당신은 아무것도 반환하지 않습니다. findsmallestprivate(ptr->left);을 실행 한 다음 종료하고 int을 반환하지 마십시오.

warning C4715: not all control paths return a value은 입력에 따라 값을 반환하지 않는 함수가 있음을 의미합니다.

다른 문제는 findsmallestprivate과 동일합니다.

returnnodepri에서 : ptr->key < key 또는의 경우

ptr->key > key 당신은 Tree::node* 예상 반환하지 않습니다. returnnodepri을 실행했지만 그 결과로 어떤 값도 반환하지 않습니다.