当前位置: 首页 > 知识库问答 >
问题:

查找树目录Java的最大和最小路径长度

苏高旻
2023-03-14

我遇到了一个问题,这个问题涉及到一个目录树,以及在这个目录树中找到最小和最大长度的路径。问题在于:

给定一个目录和文件名的字符串,其中“-”的数字表示所有目录之间的关系(例如目录中的文件和目录),找出最小和最大的路径长度。

例如,具有以下内容的字符串:

dir1
-file1
-file2
-innerDir1
--file11
--file12
--file13
--innerinnerDir1
---file111
-innerDir2
--file21

显示了file1、file2、innderDir1和innderDir 2都在目录dir1中。file11、file12、file13和innerDir1都在目录innderDir.1中。

文件路径“dir1/”显然是最短路径,其中“dir1/innerDir1/innerinnerDir1/file111”显然是最长路径(由字符串的长度测量)。

从我的工作中,我了解到这是一个树问题,特别是目录树问题。所以,我尝试了 2 种递归方法:一种找到最大值,一种找到最小值。

但是,我不太清楚如何。让“-”确定哪些目录/文件在哪些目录中让我感到困惑。我还实现了一个基本的树结构(请参阅下面的代码)。如何在给定字符串的情况下html" target="_blank">构建树?我不应该担心构建树然后遍历它,而是尝试在不使用树结构的情况下找到最小值和最大值吗?

树代码:

public class Tree<T> {
    private Node<T> root;

    public Tree(T rootData) {
        root = new Node<T>();
        root.data = rootData;
        root.children = new ArrayList<Node<T>>();
    }

    public static class Node<T> {
        private T data;
        private Node<T> parent;
        private List<Node<T>> children;
    }
}

共有1个答案

潘文乐
2023-03-14
public void doit(){
    String data = "dir1-file1-file2-innerDir1--file11  
    --file12--file13--innerinnerDir1---file111-innerDir2--file21";

    System.out.println("Smallest -> " + findSmallest(data));
    System.out.println("Largest -> " + findLargest(data));

}

public String findSmallest(String data){

    return new StringTokenizer(data,"-").nextToken();

}

public String getDelimiter(int value){

    StringBuilder sb = new StringBuilder();

    for (int i = 0 ; i < value; i++){

        sb.append("-");
    }


    return sb.toString();

}


public String findLargest(String data){

    int depth = 0;      

    while (data.indexOf(getDelimiter(++depth)) != -1);

    depth-=1;       
    String value = data.substring(data.indexOf(getDelimiter(depth)) + depth);       
    return value.substring(0, value.indexOf(getDelimiter(1)));


}
 类似资料:
  • 给了我一个问题,上面写着: 给定一个具有整数权值(正负两种)的连通有向图,发展一种求两顶点之间最短路径的算法。 我想我可以使用最小生成树算法,比如Kruskal的算法,然后用Dijkstra的算法来证明,因为在MST中,每个顶点只有一条内边,Dijkstra的算法即使在负权值下也能工作。 这听起来像是共食吗? 附注。我很难证明MST包含有向图的每个顶点的最短路径。

  • 在一个具有不同正边的无向图中,是否可能有一个MST与最短路径树没有公共边? 我一直试图引出不同的例子,但似乎这是不可能的。最短路径树中的最短路径边似乎也应该包括在MST中。

  • 如何在二叉树中找到最小路径和,并打印路径?路径可以从ROOT节点到任何LEAF节点。我已经编写了C代码来查找最小和,但是在打印路径时遇到了问题。 参数列表中的未使用,有人能帮我打印路径和最小的路径吗?

  • 给定一个成本矩阵cost[][]和cost[][]中的一个位置(m,n),写一个函数,返回从(0,0)到(m,n)的最小成本路径的成本。矩阵的每个单元格表示遍历该单元格的成本。一条路径到达(m,n)的总成本是该路径上所有成本的总和(包括源和目的地)。您只能从给定的单元格中向下、向右和沿对角线向下遍历单元格,即从给定的单元格(i,j),可以遍历单元格(i+1,j),(i,j+1)和(i+1,j+1)

  • 我很难找到使用递归函数查找搜索二叉树的最长路径的代码。 bst_node是搜索二叉树的节点。 退出递归的条件非常简单: 在进行递归之前,打印节点的值: 如果假设深度x处的节点只有一个左子节点,那么最长路径穿过节点的左子节点,通过使用递归,我们可以这样写: 如果深度x处的节点只有右子节点,则最长路径穿过节点的右子节点,通过使用递归,我们可以像这样编写它 但是,如果节点同时具有左子项和右子项怎么办?我

  • (b)假设图的最小生成树是唯一的。无向图的最小生成树中一对顶点之间的路径一定是最短(最小权)路径吗? 我的回答是 (a)