【发布时间】:2021-02-09 11:13:38
【问题描述】:
我正在尝试创建一个 Tree 或 Graph 数据结构,如果存在特定路径,我可以快速搜索(深度搜索)。特别是,从字符串列表开始:
ArrayList<String> data = new ArrayList<String>();
data.add("2.2.3.3.3");
data.add("2.3.4.3.4");
data.add("2.2.2.4.4");
String pathToFind1 = "2.3.4.X.4"
String pathToFind2 = "2.X.X.2.4"
String pathToFind3 = "2.3.X.4.4"
以及要查找的路径(例如“X.2.X.4.4”),我会检查是否存在以下路径:
- pathToFind1:链接节点 2(深度 1)、3(深度 2)、4(深度 3)和 4(深度 5);
- pathToFind2:链接节点 2(深度 1)、2(深度 4)和 4(深度 5);
- pathToFind3:链接节点 2(深度 1)、3(深度 2)、4(深度 4)和 4(深度 5);
值 X 代表一个通用值。
/*
2
/ \
2 3
/ \ \
2 3 4
/ \ \
4 3 3
\ \ \
4 3 4
*/
public static boolean findPath(String path) {
//...
}
findPath(pathToFind1); //return true
findPath(pathToFind2); //return false
findPath(pathToFind3); //return false
我曾想过使用Trie,但这种结构的主要问题是我应该考虑一个完整的查找路径(即包含所有元素的路径)。 你能建议一个数据结构或解决方案来解决我的问题吗?请注意,不必使用树或图,但我的目标是快速搜索路径。
【问题讨论】:
-
trie 可以完成这项工作。当你得到 X 时做一个 dfs。有什么问题吗?
标签: java data-structures graph tree depth-first-search