我正在尋找有關搜索樹狀數據結構策略的建議。樹搜索算法
該結構是一棵樹,其中每個元素是一個字符串,每個分支是一個句點,並且一個路徑是幾個字符串和從根開始的句點的連接。根的根和邊是一個特殊的情況,在它們後面沒有字符串。
所以給出的樹,
{root}
/ \
A X
/ \ /
B C Y
有效路徑字符串 「A」, 「A·B」, 「A.C」, 「X」 和 「X.Y」。
我們擁有的是一組字符串,我們需要在此樹中搜索並找到終止每個字符串的元素。並非所有的字符串都出現在樹中。當我們找到所有字符串時我們停止搜索。我們需要多次執行此搜索,但每次樹木可能會有所不同。儘管如此,要搜索的字符串集合是相同的。
目前我們使用的是深度優先搜索,但如果所有字符串均屬於根下的最後一個分支,則效率不高。我覺得應該有更好的方式來做到這一點。
什麼是一個很好的算法來做這個重複搜索?在這裏也可以利用多線程嗎?
每個節點的孩子是否總是按字母順序排列?樹木是否平衡? –
樹不平衡,節點不按字母順序排列。 – jamesd