给定一个大的树结构,是否有一种有效的算法来对树进行查询或过滤?

时间:2012-02-28 20:52:40

标签: java algorithm tree graph-algorithm

假设我想要父节点匹配某些条件的所有节点。

除了检查每个节点并构建一个充满节点或子树的结果对象之外,是否有可接受的方法?

2 个答案:

答案 0 :(得分:5)

如果树没有以某种方式根据搜索条件进行排序或索引,则您无法修剪树遍历(例如,您无法决定不在某个特定节点上接受正确的子节点)。因此,您别无选择,只能遍历整棵树。

答案 1 :(得分:1)

这就是它。您只需访问每个节点以查看它是否符合条件。

但是有一些方法可以加快速度:

  • 使用索引。如果您反复查询同一属性,那么在该属性上创建索引并用于搜索可能是有益的。这可以极大地加速你的代码。虽然做法不是免费的:您需要预先计算索引,每次更新树时都要更新它,并且需要更多内存来保存它。
  • 如果您有多核机器,则可以使用单独的线程并行处理各个子树。