我想用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));
}
}
「深度優先」...您是指級別順序?顛倒秩序?我很困惑..其他的可能性是預先訂購,訂購,訂購 – varatis 2012-03-15 17:02:08