2016-10-31 4 views
-1

photo of my non-recursive code이진 트리에서 요소의 발생 횟수를 가져 오는 재귀 적 메서드

안녕하세요. 재귀 형식으로이 방법을 쓰는 데 문제가 있습니다. 이 방법은 이진 검색 트리에서 주어진 요소의 발생량을 가져옵니다. 내가이 같은 동일한 이름의 개인 도우미 메서드, 그것을 구현하기 위해 노력했다, 재귀 적으로이 문제를 해결하려면 다음

public int count(){ 
count = 0; 
if (root == null) 
    return count; 
return count (root.getInfo()); 

private int count(T element){ 
(Basically the same code you see in the photo) 
} 

하지만 난 오버플로 오류가 끝났다. 이 메서드를 재귀 적으로 구성 할 수있는 방법을 알려주시겠습니까?

건배, 그리고 고마워.

+0

루트가 함수의 로컬 변수가 아니기 때문에 오류의 원인 일 수 있습니다. 당신은 재귀 함수를 원하지만 당신은 감각이없는 루프를 사용하고 if 조건 안에 "root = root.getLeft()"도 의미가 없습니다. –

답변

1

임시 구현은 다음과 같이 보일 수 있습니다.

public int count(T element, T root){ 
    if(element == null) { 
     return 0; 
    } 
    int count = 0; 
    int compare = element.compareTo(root.getInfo()); 
    if(compare == 0){ 
     count++; 
    } 
    count += count(element, root.getLeft()); 
    count += count(element, root.getRight()); 
    return count; 
} 

count(item, root); 
관련 문제