3

ディレクトリ内のファイルを再帰的に検索するコードを作成する場合、たとえば、次の方法を適用します。

public void list(File file) {
    System.out.println(file.getName());
    File[] children = file.listFiles();
    for (File child : children) {
        list(child);
    }
}

プレオーダー、インオーダー、ポストオーダーのトラバーサルで表示する必要がある場合、どうすればよいですか?

このファイル検索でツリートラバーサルを関連付けることができません。

4

2 に答える 2

1

親は子の前に処理(印刷)されるため、コードは事前注文されています。ループの後にプリントを移動した場合、それはポストオーダーになります。この場合、順序付けはあまり意味がありません。二分木がある場合は、各子の処理の間に親を処理した場合になります。

于 2013-02-16T20:51:35.410 に答える
0

あなたがしているのは、事前注文トラバーサルです。

これは注文後のトラバーサルです。

public void list(File file) { 
    if(file == null)return;  
    File[] children = file.listFiles();
    for (File child : children) {
        list(child);
    }
   System.out.println(file.getName());
}

そして、順序通りのトラバーサルには、一般的なツリーの自然な定義がありません

于 2013-02-16T20:55:10.553 に答える