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);
}
}
ですが、うまくいきません。私は木の中にたくさんのエントリーを入れていますが、明らかな順序はありません。誰かが私が間違っているのを見ることができますか?
ありがとうございました。
編集:私はその下に作られた
コメントで始めるためにここにされている必要があります:
申し訳ありませんが、私はprint文を削除している必要があり、彼らはそれを試してみて、デバッグするだけでした。私が遭遇している問題は、それが始まるノードとそのノードの兄弟を検索するだけで、レベルを上げるべきではないが、すべてを印刷するということです。 (私はこれをメインに編集します、それは最初からあったはずです、残念です)。
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