我正在寻找有关搜索树状数据结构策略的建议。树搜索算法
该结构是一棵树,其中每个元素是一个字符串,每个分支是一个句点,并且一个路径是几个字符串和从根开始的句点的连接。根的根和边是一个特殊的情况,在它们后面没有字符串。
所以给出的树,
{root}
/ \
A X
/ \ /
B C Y
有效路径字符串 “A”, “A·B”, “A.C”, “X” 和 “X.Y”。
我们拥有的是一组字符串,我们需要在此树中搜索并找到终止每个字符串的元素。并非所有的字符串都出现在树中。当我们找到所有字符串时我们停止搜索。我们需要多次执行此搜索,但每次树木可能会有所不同。尽管如此,要搜索的字符串集合是相同的。
目前我们使用的是深度优先搜索,但如果所有字符串均属于根下的最后一个分支,则效率不高。我觉得应该有更好的方式来做到这一点。
什么是一个很好的算法来做这个重复搜索?在这里也可以利用多线程吗?
每个节点的孩子是否总是按字母顺序排列?树木是否平衡? –
树不平衡,节点不按字母顺序排列。 – jamesd