ディレクトリ/ファイルに関する情報を含む、ファイル システム階層の N 分木表現をコーディングしています。ツリー内の各ノードは、親ノードとその子 (存在する場合) のリストで構成され、個別の Tree オブジェクトに含まれています。私が知る限り、これはツリーを実装する最も雄弁な方法ではありませんが、私はプロジェクトに十分に取り組んでおり、戻る価値はありません。
public class TreeNode {
private FileSystemEntry data;
private TreeNode parent;
private ArrayList<TreeNode> children;
private boolean directory; //separates files from folders (files have no children)
複数のツリーがあるため、ツリー構造は独自の個別のオブジェクトとして定義されます。
public class DirectoryTree {
private TreeNode Root;
private int numNodes;
private TreeNode Focus;
キューを使用して各ノードを追加し、その子 (または同様のもの) をトラバースする必要があることを理解しています。
参考までに、各ファイル/ディレクトリの名前を出力する深さ優先の再帰ソリューションを次に示します。
public void PrintTreeNames() {
PrintTreeNames(this.Root);
}
private void PrintTreeNames(TreeNode n) {
if (!n.isDirectory()) {
System.out.println(n.getData().getName());
} else {
for (int i = 0; i < n.getChildren().size(); i++) {
PrintTreeNames(n.getChildren().get(i));
}
System.out.println(n.getData().getName());
}
}
深さ優先から幅優先への変更は小さな変更にすぎないと思いますが、頭が回らないようです