BST 트리가 있습니다. 값을 가져 와서 그 값 (root = 0)을 포함하는 노드의 레벨을 반환하는 메소드를 만들고 싶습니다. 그런 노드는 없습니까? -1을 반환합니다. 나는 그것을 반복적으로하고 싶다. 이 코드는 잘 작동합니다 :java- BST 재귀 값 찾기
private int recursiveContains(BinaryNode node, int searchVal){
int nodeKey = node.nodeKey;
if (searchVal < nodeKey){
if (node.leftChild != EMPTY_NODE)
return 1 + recursiveContains(node.leftChild, searchVal);
}else if (searchVal > nodeKey){
if (node.rightChild != EMPTY_NODE)
return 1 + recursiveContains(node.rightChild, searchVal);
}
return 0;
}
하지만, 단 한 트리가 검색 값을 포함한다.
어떻게 반복을 멈추고 리프에 도달했을 때 -1을 반환하고 값을 찾지 못했습니까? 재귀가 가능합니까?
감사합니다.
여전히 작동하지 않습니다. 노드가 발견되지 않으면 가장 가까운 노드 -1의 높이를 반환합니다. – user3150902
@ user3150902 첫 번째 단락의 끝에 전달할 때 언급했듯이 재귀 호출에서 가능한 -1 값을 고려하고 적절하게 처리해야합니다. 나는 어떤 의미인지 보여주기 위해 샘플 코드를 편집했다. 재귀 호출이 -1을 반환하면 반환하지 않아야한다. 단지 "발견되지 않은"값으로 넘어 가게하라. –