0

我在 java 中有一个 TreeModel,我得到了一个查找路径以检查该路径是否存在。例如 /dir1/dir2/dir3/ 是我树中的现有路径。我的树是非二元的。我将如何解决这个问题?我的想法是让函数采用 DefaultMutableTreeNode 然后检查节点是否与我路径中的第一个目录具有相同的名称,以此类推其余目录。我的问题是如何递归地更改为下一个字符串和下一个节点。如果我的函数是递归的、迭代的等。任何帮助都会很棒!提前致谢。

4

2 回答 2

1

假设您有一个典型的树,其中路径的每个元素都是下一个节点的键,当在根节点上调用时,这样的事情应该起作用:

public boolean hasPath(String path) {
    Node node = this;
    for (String key : path.split("/")) {
        node = node.get(key);
        if (node == null)
            return false;
    }
    return true;
}

它是迭代的,因此比陷入递归的兔子洞更容易理解。它也更有效率。

于 2015-10-31T07:32:23.987 回答
0

您可以执行此操作将所有子节点从根目录保存并处理到堆栈中然后开始弹出每个子节点并以递归方式对其执行相同操作

于 2015-10-31T06:25:44.617 回答