2013-04-01 4 views
-1

2 진 트리에 대한 재귀 적 메소드를 구현해야하며, 테스트 할 수 없기 때문에 작성한 메소드가 올바르게 구현되었는지 확인하고 싶습니다. 이들은 실제 방법이 아닙니다. 알고리즘의 의사 코드를 작성하면됩니다.Java Tree 메소드 구현

a))를 트리

countNodes(TreeNode root){ 
    if(root == null) 
     return 0; 
    else{ 
     TreeNode left = root.getLeftChild(); 
     TreeNode right = root.getRightChild(); 
     return (countNodes(left)+countNodes(right)) + 1; 
    } 
} 

B에서 노드들의 수를 계산 트리의 높이

height(TreeNode root){ 
    if(root == null) 
     return 0; 
    else{ 
     return Math.max(height(root.getLeftChild()), height(root.getRightChild()) +1; 
    } 
} 

c) 찾기 최대 요소

maxElem(TreeNode root){ 
    if(root == null) 
     return 0; 
    else{ 
     int temp = 0; 
     temp = Math.max(maxElem(root.getLeftChild()), maxElem(root.getRightChild())); 
     return Math.max(root.getValue, temp); 
    } 
} 

D를 계산) 요소의 합 찾기

e) 상기 요소

average(TreeNode root){ 
    int sum = sum(root); 
    int elems = countNodes(root); 
    return sum/elems; 
} 

F의 평균을 찾기) 찾기 특정 항목

search(int i, TreeNode root){ 
    if(root == null) 
     return false; 
    else if(root.getValue == i) 
     return true; 
    else{ 
     search(i, root.getLeftChild); 
     search(i, root.getRightChild); 
    } 
} 

그램) 항목이 다른

isAncestor(TreeNode p, NodeNode c){ 
    if(p==null) 
     return false; 
    else 
     return (c in p.getLeftChild() || c in p.getRightChild()) 
} 

의 상위인지 판별 h) 최대 레벨을 결정하십시오.

maxFull(TreeNode root) 
    if(root == null) 
     return 0; 
    else{ 
     return(numNodes in level h == 2^h - 1) 
    } 
} 
+0

특정 질문이 있으십니까? 그렇지 않다면, 질문은 [codereview] (http://codereview.stackexchange.com)에서 더 잘 대답 할 수 있습니다. – nickb

+0

이 의사 코드에서 실제 코드를 작성하는 것이 너무 어렵지 않아야합니다. 이 의사 코드의 대부분은 그대로 수정되거나 거의 수정되지 않습니다. 그런 다음 단위 테스트를 사용하거나 표준 라이브러리와 비교할 수 있습니다. – wchargin

답변

1

몇 가지 사소한 문제가 있습니다 트리 요소의 합계와 개수에 대해 형식 캐스팅을 시도한 다음 해당 몫을 반환하십시오.
3) 함수 검색에서 마지막 else 문에서 아무 것도 반환하지 않습니다. 시도해보십시오 : return search(i, root.getLeftChild()) || search(i, root.getRightChild()); (나머지 코드에서 이들은 기능이 아니라 속성입니다 ...

나머지는 괜찮습니다 :)

2

귀하의 MaxElm 방법이 잘못되었습니다. 모든 요소에 음수 값이 있으면 작동하지 않습니다.

+0

요소는 양의 정수로되어 있습니다. 위의 코드가 올바르게 구현되었다고 생각하는 것을 제외하고는? – Leon

0

이진 트리에 대한 재귀 적 메서드를 구현해야하며 테스트 한대로 메서드가 올바르게 구현되었는지 확인하고 싶습니다. 이들은 실제 방법이 아닙니다. 알고리즘의 의사 코드를 작성하면됩니다.

Java에 실제 코드로 작성하고, 일부 단위 테스트를 작성하여 실행하십시오.

당신이 하루의 끝에 제출해야 물건 의사 코드가 아닙니다 실제 코드 인 경우, 수동으로 다시 의사 코드에 자바를 번역 할 수 있습니다 ...


는 엄밀히, 말하기 의사 코드 언어가 무엇인지 의미하지 않는 한 의사 코드가 정확한지 여부를 말할 수 없습니다. 당신의 나무는 음의 값을 포함하는 경우이 int로 더블 아니므로

1) asMTilsted 알, maxElem는 평균이 정확하지 않을 수 있습니다)
이 작동하지 않습니다