나는 이진 검색 트리에 요소를 추가하기위한이 자바 재귀 프로그램을 발견했다 : 그것은 끝에 N을 반환 한 후 다시 뿌리를 할당하는 이유를 이해하지 못하는 것을이 재귀 함수를 추적하는 방법?
public void add(int e){
root=add(root, e);
}
public Node add(Node n, int e){
if (n==null){
n=new Node(e);
} else {
if (e<n.elem){
n.left=add(n.left,e);
} else{
n.right=add(n.right,e);
}
}
return n;
}
입니다. 도움이 되었습니까?
왼쪽과 오른쪽에 대한 재귀 호출이 끝나면 끝에있는 return n 문이 호출됩니다. 재귀를 다루는 튜토리얼 (또는 교과서)을 검토해야합니다. –
이것을 이해하는 가장 좋은 방법은 연필과 종이로 처리하고 빈 나무로 시작하는 것입니다. 그런 다음 코드를 추적하여 2, 4, 1 및 5 값을 추가하십시오.'root'는 첫 번째 호출에서만 실제 트리 루트를 참조합니다. 그 후, 하나 이상의 레벨이 내려 가면'root'는 현재 서브 트리의 루트를 참조합니다. –