나는 toString()
메서드를 구현하여 AVL 트리의 선행 순서 탐색을 인쇄하려고합니다. 노드에 int 또는 char을 인쇄하고 싶지만 존재하지 않으면 대시 (-
)를 인쇄하십시오. 지금까지는 이것이 내 코드입니다.재귀를 사용하여 "조건부 문자열"을 만드는 방법
public String toString() {
if(root != null) {
AVLNode<T> node = root;
String result = "";
return preorder(node, result);
}else {
return "Empty root";
}
}
private String preorder(AVLNode<T> root, String result) {
result = result + root.getElement().toString();
if(nodeCheckLeft(root)) {
preorder(root.getLeft(), result);
}else {
result = result + "-";
}
if(nodeCheckRight(root)) {
preorder(root.getRight(), result);
}else {
result = result +"-";
}
return result;
}
nodeCheck는 노드가 비어 있는지 알아보기 위해 사용하는 보조 메소드입니다.
예상 결과
은 다음과 같습니다 : 여기Adding{'b','a','d','c'} --> "ba--dc--"
Adding{'b'} --> "b--"
Adding{'b','a'} --> "ba---"
Adding{'b','a','d'} --> "ba--d--"
전체 테스트입니다
4 번 줄에 오는 내용은 b-
입니다. 문자열이 "더 깊은"분기 재귀에서 변경되기 때문에 결과 문자열을 toString()
메서드에 반환하는 주 분기는 업데이트되지 않는다고 (내가 잘못 생각할 수도 있음) 가정합니다. . 이 문제를 해결할 방법이 있습니까?
AVLNode 자신의 클래스? – Fahad
예, 제 수업입니다. – Eleuis