이것은 특정 노드가 이진 트리에 있는지 찾는 내 방법입니다. 여기에는 내 방법이 있습니다. 내가 return 문 누락 등의 오류가 발생 else if(x<p.element){
및 else {
내부 반환 키워드를 삽입하지 않은 경우이진 검색 트리에서 찾기 작업에서 return 키워드를 사용하는 방법
public boolean find(BinaryNode p,int x){
if(p==null){
return false ;
}
else{
if(x==p.element){
return true;
}
else if(x<p.element){
return find(p.left,x);
}
else {
return find(p.right,x);
}
}
}
내 질문입니다.
5,4,6,60,25,10 요소로 구성된 이진 트리가 있다고 가정 해보십시오. 내가 10을 검색하고 경우
그래서 재귀 calls.Then의 찾을 수 return 문이 때문에
if(x==p.element){
return true;
을 만족하는 시간이있다.
트리에없는 요소를 검색하는 경우 결국 문구에 도달하게됩니다.
if(p==null){ return false ; }
거기에 return 문이 있습니다. 따라서
도 나는 다른 의 반환을하지 않아도 및 다른 경우 절을 어떻게 든 거기에 내가 마지막으로 return 문 오른쪽에 도달하는 방법? 그래서 다른 경우와 다른 조항에서 반환 키워드를 가지고 있지 뭐가 잘못 .
왜 내가 가지고 있어야합니까?
왜 내가 따라서
`public boolean find(BinaryNode p,int x){
if(p==null){
return false ;
}
else{
if(x==p.element){
return true;
}
else if(x<p.element){
find(p.left,x);
}
else {
find(p.right,x);
}
}
}`
어? 'find (p.left, x);'를 호출 할 때 어떤 것을 반환하지 않으면 아무 것도 반환되지 않습니다. void가 아닌 함수에 대해서는 "return statement"에 도달하지 않습니다. 당신이 그것을 말하지 않으면 무엇을 돌려 줄 것이라고 생각하니? – Dukeling
'return's가 필요한 이유를 이해하려면 종이에 콜 트리를 그립니다. 마침내 끝나는 3 개의 호출로 예제를 그리면 호출 트리 위로 결과를 보내지 않음으로써 정보가 손실되는 방식을 확인할 수 있습니다. 간단히 말해서, 마지막 호출이 아니라 복귀가 필요한 첫 번째 호출이며, 이는 반환 값을 아래에서 위쪽으로 전파하여 수행됩니다. – keyser