I am working on golang implementation of subdomains tags storage (looks like multimap). Not so clear for me what type of tree should I use for implement following logic:
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]
This task is different than suffix search, for example "msn.com" belongs to "com" and "www.google.com" belongs to "google.com" and "www.google.com".
If someone could to point me to c/c++/golang sources I would also appreciate.