我正在研究子域标签存储(看起来像多图)的golang实现。对我来说还不太清楚,我应该使用哪种树来实现以下逻辑:
tree := NewTree()
tree.AddTag("com", 1)
tree.AddTag("google.com", 2)
tree.AddTag("google.com", 3)
tree.AddTag("www.google.com", 4)
var ret []int
ret = tree.GetTags("msn.com") // ret = [1]
ret = tree.GetTags("www.msn.com") // ret = [1]
ret = tree.GetTags("google.com") // ret = [1,2,3]
ret = tree.GetTags("www.google.com") // ret = [1,2,3,4]
ret = tree.GetTags("mail.google.com") // ret = [1,2,3]
ret = tree.GetTags("debug.www.google.com") // ret = [1,2,3,4]
此任务与后缀搜索不同,例如,“ msn.com”属于“ com”,“ www.google.com”属于“ google.com”和“ www.google.com”。
如果有人可以将我指向c / c ++ / golang源,我也将不胜感激。