시험에 대한 독학으로 문제가 생겼으며 & 답이 부족하여 문제가 발생했습니다. 운동은 다음과 같이 명시합니다 :재귀를 사용하여 이진 트리 안의 리프 노드에서 가장 긴 경로를 찾을 수 있습니다.
"주어진 2 진 트리의 높이, 즉 루트 노드에서 리프 노드까지의 가장 긴 기존 경로를 계산하기 위해 재귀를 사용하는 알고리즘을 작성하십시오."
메소드의 기본 시작이 제공되며 최종 응답을 구성하려면이 메소드를 수정해야합니다. 이 메서드 밖에서 추가 메서드를 사용할 수 없습니다.
// Binary tree height, find the longest path to a leaf node
public static int height(BTree t) {
return 0;
}
각 함수 호출 전에 노드가 트리에 추가됩니다. 최종 주어진 나무는 다음과 같습니다
// Binary tree height, find the longest path to a leaf node
public static int height(BTree t) {
BTreeNode n = t.getRoot();
int height = 0;
int calc = 0;
if (n == null)
{
return height;
}
else
{
while (n!=null) {
n = n.getLeftChild();
calc++;
}
}
if(calc > height) {
height = calc-1;
height = 0;
}
n = t.getRoot();
while (n!=null) {
n = n.getRightChild();
calc++;
}
if(calc > height) {
height = calc-1;
height = 0;
}
return height;
} // height()
은 내가 공부를 도와 모든 도움이 시험을 통과하십시오 :
다음 10
__/ \__
5 15
/\ /\
3 8 12 18
\ /\
4 11 13
내가 지금까지 가지고 있지만 제대로 작동하지 않는 것입니다 대단히 감사합니다!
"각 호출 전에 노드가 추가되었습니다"란 무엇을 의미합니까? 이 나무가 이미 건설되지 않았다는 것을 의미합니까? – Jared
이 질문을하기 전에 조사를 해봐야한다고 생각합니다. 나무의 높이는 표준 문제입니다. –
예, 트리는 미리 빌드되지 않았지만 각 함수 호출 전에 노드에 트리가 추가됩니다. 즉, 첫 번째 호출에서 트리에는 루트 노드 만 있고이 함수는 별도의 주 함수에서 호출되어 트리의 현재 높이를 확인합니다. 나는 조사했지만, 다른 재귀 함수가 허용되지 않는이 상황에서 무엇을해야하는지, 그리고이 노드가 단일 노드 대신에 매개 변수로서 전체 트리를 얻는다는 사실을 발견하지 못했다. 나는이 문제에 대해 2 시간의 더 좋은 부분을 보냈으며 잃어 버렸다. –