예상대로 작동하는이 재귀 함수를 작성했습니다. 이진 트리의 유효성을 검사합니다. 즉, 주어진 이진 트리가 이진 검색 트리인지 확인하고 올바른 답을 제공합니다.이진 트리의 유효성 확인과 관련된 작은 문제
Control may reach end of non-void function
나는이 오류가 무엇을 의미하는지 알고 : : 함수가 바로 함수의 끝에서 떨어질 bool
을 반환하고 안
는 그러나, 나는 컴파일러 경고가 말을 얻을. 나는 그것이 그것을 극복하는 방법을 모른다. bool
을 반환한다.
나는 재귀하는 동안 간과했을지도 모르는 것을 찾으려고 노력했지만 아무 소용이 없었다. 이 부분에서
bool isBSTRecursively(Node * root){
if (!root) {
return true;
}else if (!root->getLeft() && !root->getRight()){
return true;
}else if(!root->getLeft()){
if (root->getRight()->getData() > root->getData()) {
return isBSTRecursively(root->getRight());
}
}else if (!root->getRight()){
if (root->getLeft()->getData() < root->getData()) {
return isBSTRecursively(root->getLeft());
}
}else{
return (isBSTRecursively(root->getLeft()) && isBSTRecursively(root->getRight()));
}
}
고유하지 않은 데이터는 어떻습니까? 즉, 노드와 그 두 자식 중 하나 (또는 둘 모두)가 노드와 동일한 데이터를 가질 수 있으며 트리의 정렬을 위반하지 않을 것입니다. 귀하의 코드가이 사건을 처리합니까? –
또한, 당신의 나무를 그래프로 만드는 것은 어떨까요? 그걸 확인하고 싶니? –
@AlexeyFrunze, 당신 말이 맞아요. 제 관심을 가져 주셔서 감사합니다. 나는 그러한 조건들을 통합하려고 노력할 것이다. – totjammykd