ANTLR 트리 명령과 재귀를 사용하여 트리를 탐색하려고합니다. 내가 현재 가지고있는 코드는 다음과 같습니다 그러나, 잘, 그것은 작동하지 않습니다깊이있는 첫 번째 문제를 재귀 적으로 가로 지르다
public void traverseTree(Tree tree){
int counter = 0;
System.out.println(tree.toString());
if (tree.getChildCount() > 0 && tree.getChild(0) != null){
System.out.println(tree.toString() + counter++);
tree = tree.getChild(0);
traverseTree(tree);
}
while (tree.getParent().getChild(tree.getChildIndex() + 1) != null){
System.out.println(tree.toString() + counter++);
tree = tree.getParent().getChild(tree.getChildIndex() + 1);
traverseTree(tree);
}
}
. 나는 트리에서 많은 항목을 얻었지만 확실한 순서는 없습니다. 아무도 내가 잘못 가고있는 것을 볼 수 있습니까?
감사합니다.
편집 : 나는 인쇄 문을 제거 할 뻔
죄송 그들은 그것을 시도하고 디버그하는 단지가 있었다 : 그 아래에 만든
코멘트로 시작하는 이곳에 있어야합니다. 내가 마주 치게되는 문제는 노드가 시작되는 노드와 그 노드의 모든 형제를 검색해야하며, 레벨을 올라가지 않아야한다는 것입니다.하지만 모든 것을 인쇄합니다. (나는 이것을 메인으로 편집 할 것이고, 시작해야만한다. 미안하다).
public void traverseTree(Tree tree){
System.out.println(tree);
if (tree.getChild(0) != null){
traverseTree(tree.getChild(0));
}
if(tree.getParent().getChildCount() > 1){
if(tree.getParent().getChild(tree.getChildIndex() + 1) != null)
traverseTree(tree.getParent().getChild(tree.getChildIndex() + 1));
}
}
"깊이 우선"... 레벨 순서를 의미합니까? 수준 역순? 나는 혼란 스럽다. 다른 가능성은 preorder, inorder, postorder – varatis