이진 검색 트리에서 발견 된 요소의 깊이를 알려주는이 메서드를 구현하려고합니다.노드를 찾을 수없는 경우 이진 검색 트리에서 어떤 레벨로 이동해야합니까?
제 질문은 요소를 찾지 못했을 때 내 검색에서 종료 (또는 배치) 된 트리의 수준을 어떻게 반환해야합니까?
즉 노드가 트리에 존재하지 않는 경우 노드가 삽입되어야하는 트리의 레벨을 반환해야합니다. 엘리먼트가 트리에서 발견되지 않았을 때 "0"을 반환하고 오히려 그것이 배치되어야하는 레벨을 반환하고 싶지 않습니다. 여기
내가 지금까지 가지고있는 코드이지만, 1public int depthSearch(Node root, int key){
int depthLevel = 0;
if (root==null || root.data==key){
depthLevel++;
return depthLevel;
}
if (root.data > key){
depthSearch(root.left, key);
depthLevel++;
return depthLevel;
}else{
depthSearch(root.right, key);
depthLevel++;
return depthLevel;
}
}
내 두 번째 질문은 나의 발견 방법에 깊이 레벨 카운터 로직을 추가하는 것이 만들 것입니다 반환 유지 ? 내 코드를 살펴 복용 사전에
public boolean find(int id){
Node current = root;
while(current!=null){
if(current.data==id){
return true;
}else if(current.data>id){
current = current.left;
}else{
current = current.right;
}
}
return false;
}
감사 : 여기
는 방법이다. 그래서 비슷한 질문이있는 스레드를 찾을 수 없었습니다.
당신은'재귀 호출의 결과를 return'하지 않았고, 모든 재귀는 depthSearch를 호출하지만 실제로 반환하고, 정확하게 깊이 0 –
에서 시작 그래서 매번 첫 번째 호출 만 반환합니다. – Meepo