【发布时间】:2017-12-28 17:02:30
【问题描述】:
我正在编写一个算法,它将首先获取各种端点的配置文件及其相关方法,如下所示:
/guest guestEndpoint
/guest/lists listEndpoint
/guest/friends guestFriendsEndpoint
/guest/X/friends guetFriendsEndpoint
/guest/X/friends/X guestFriendsEndpoint
/X/guest guestEndpoint
/X/lists listEndpoint
/options optionsEndpoint
X 这里代表一个通配符,所以任何字符串都可以匹配。
该算法会将其作为输入并构建一棵树,其中每个节点代表/ 之间的一个标记。每个叶子都是一个有效的端点。
然后当用户传入guest/abc/friends之类的东西时,它将从根开始遍历树,然后查找连接到根的guest节点,如果存在则转到节点guest,如果@987654329 @ 这里的客人会有一个wildcard 节点,所以如果abc 与guest 的任何节点都不匹配,但存在wildcard 节点,它将转到wildcard。然后它会从wildcard 看它是否有一个friends 节点,如果有就去那里。那么如果friends是一个叶子节点就会返回对应的方法。
这个算法有意义吗?我想知道查找的运行时间是什么。我想这将是 O(n),其中 n 是传入的参数中的令牌数。
这是我将根据上面的输入构建的图表的图像。每个菱形代表一个端点方法。
感谢您的帮助!
【问题讨论】:
-
所以这里的通配符是指我们在纸牌游戏中使用的小丑?通配符的值可以与任何东西匹配。对吗?
-
@user5250644 正确
-
好吧,我仍然对你的树感到困惑。可以发一张树的图片供参考吗?
-
我同意 usersomething 你能添加更多细节到它的外观和其他相关的东西
-
您在问题的 3 个不同位置提到了 3 种不同的算法,您想要哪个运行时间?是向上看吗?那么请随时提供您的树详细信息。
标签: algorithm tree binary-search-tree trie prefix-tree