algorithm - 具有最接近路径前缀回退的查找树

时间:2013-10-01 16:06:25

标签: c++ algorithm data-structures stl search-tree

我正在研究一个问题的算法,在这个问题上我维护一个树结构,我需要找到一个与数据节点最接近的匹配。如果没有完全匹配,则它会回退到最接近的前缀。

例如,如果说我有以下结构,其中单词(单词中的数字)是分支,带方括号的数字是数据(叶节点);我正在使用一个算法,该算法将返回结果集,如下表所示。请注意,路径分隔符为">"

           one - [1]
            /\
         two  five
         /\       \
    eight  [12]    nine
   /                  \
 [128]                [159]


+---------------------------+--------+---------------------------------------------+
| path                      | result |                                             |
+---------------------------+--------+---------------------------------------------+
| one > five > nine         |    159 | whole path matches                          |
| one > five                |      1 | partial (only "one" matched)                |
| one > two > eight         |    128 | whole path matches                          |
| one > two                 |     12 | whole path matches                          |
| one > two > eight > seven |    128 | partial (only "one > two > eight" matched)  |
| one > two > seven         |     12 | partial (only "one > two" matched)          |
+---------------------------+--------+---------------------------------------------+

我真的在使用C ++(基于STLboost)库;但只是为了这个目的指向一个漂亮的算法也同样好。

1 个答案:

答案 0 :(得分:1)

您正在寻找三元搜索树

http://en.wikipedia.org/wiki/Ternary_search_tree