如何在java中通过树查询搜索
我试图通过返回其真实名称children.get(0).children.get(0).data来返回数据为“directory”的节点字符串列表 到目前为止,当我遍历树时,它可以找到节点并添加我要查找的数据,但是当我在列表中添加这些字符串并在列表中添加System.out.println时,列表会发生变化。它可以重置、删除字符串等 就在return语句之前,我打印了列表。它不是被归还的东西。 !!!beforeoutput[Pictures,Pictures2.0,Pictures,Pictures2.0]//打印列表 !!!beforeoutput[电影和图片,电影,图片]//打印列表 GetDirectory[电影和图片,电影,图片]//实际输出 有人让我在全局范围内定义列表,我这样做了,但实际上什么也没发生 我想我要问的是如何正确地查询树。我知道它是递归的,但是当在列表中添加值时,它会把列表弄乱。如何在java中通过树查询搜索,java,recursion,tree,Java,Recursion,Tree,我试图通过返回其真实名称children.get(0).children.get(0).data来返回数据为“directory”的节点字符串列表 到目前为止,当我遍历树时,它可以找到节点并添加我要查找的数据,但是当我在列表中添加这些字符串并在列表中添加System.out.println时,列表会发生变化。它可以重置、删除字符串等 就在return语句之前,我打印了列表。它不是被归还的东西。 !!!beforeoutput[Pictures,Pictures2.0,Pictures,Pictu
我的方法的代码+控制台+一个示例树发布在这里:我不明白您在这里实际想做什么,因为您的代码凌乱而繁琐。您需要了解,当您从递归函数调用返回值时,它将返回到以前调用过的点 如果你有这样的结构
a
| - b
| - c
其中每个项目表示为
class Node{
String data;
Node nextNode;
}
如果您希望列表中包含字符串“a”、“b”和“c”,您必须这样写:
List<String> allDirectories = new ArrayList<String>();
getDirectories(allDirectories);
private void getDirectories(List<String> allDirectories) {
//somehow get next node
Node node = getNextNode();
//if next node is null, or terminating node: return
if (node == null) return;
allDirectories.add(node.getData());
getDirectories(allDirectories);
}
List allDirectories=new ArrayList();
GetDirectory(所有目录);
私有void getDirectories(列出所有目录){
//以某种方式获得下一个节点
Node=getNextNode();
//如果下一个节点为空,或终止节点:返回
if(node==null)返回;
add(node.getData());
GetDirectory(所有目录);
}
换句话说,尝试将列表作为参数传递给方法,不要在函数调用开始时重置它。要将问题标记为“已解决”,请在下面添加一个答案,然后用旁边的绿色复选标记“接受”。