我在java中有一个TreeModel,我找到了一个路径来查找路径是否存在。例如/ dir1 / dir2 / dir3 /是我树中的现有路径。我的树是非二进制的。我该如何处理?我的想法是让功能采取 然后,DefaultMutableTreeNode检查节点是否与路径中的第一个目录同名,对其余目录依此类推。我的问题是如何递归地更改为下一个字符串和下一个节点。我的功能应该是递归的,迭代的等等。任何帮助都会很棒!提前谢谢。
答案 0 :(得分: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;
}
它是迭代的,因此比去递归的兔子洞更容易理解。它也更有效率。
答案 1 :(得分:0)
你可以这样做 保存并处理从root到堆栈的所有子节点 然后开始弹出每个子节点并递归地执行它