1

除了递归查询每个节点之外,还有其他选项可以搜索给定某个标识符的节点吗?

4

4 回答 4

1

访问者对于检查复合对象中的节点总是很有趣。

如果它们具有唯一的 id,您可能希望通过直接引用复合结构的每个部分来累积一个索引。

另一方面,如果标识符可以在复合结构中重复使用,您可能不得不求助于类似 XPath 的搜索。

于 2009-02-24T18:20:04.530 回答
1

好吧,如果您使用的是树,递归是最自然的事情。除此之外,您可以在树之外维护一个列表或集合,这似乎是多余的,或者您可以简单地线性迭代树节点列表,这可能会更慢,但至少删除任何特定于遍历来自节点的代码,如果有任何价值的话。

我看不出任何类型的特定树查询(例如 xpath)正在寻找 abc 形式的所有节点,而不仅仅是在级别 a 上遍历 b,并在 b 上遍历 c,换句话说,某种过滤的递归树遍历。

于 2009-02-24T18:20:05.700 回答
0

只有当你实现它。:-(

(模式本身很少提及它的实现,不同的工具/平台会产生很大的不同。)

于 2009-02-24T18:15:37.037 回答
0

您可以使用任何您想要的搜索。

复合模式唯一说的是 1 个对象或这些对象的集合应该实现相同的接口。

该实现内部发生的事情与复合模式无关。

于 2009-02-24T18:19:14.717 回答