【发布时间】:2014-06-10 07:16:38
【问题描述】:
给定一个包含 2 个字符串的通用后缀树:st1 和 st2。
如果子树中有一个离开V的叶子代表st1(和/或st2)的后缀,则需要找到一种算法,将每个节点V标记为1(和/或2)。
我的猜测是,我们需要使用这样一个事实,即 st1 的每个后缀的最后一个字母是 $,而每个后缀 st2 的最后一个字母可能是 #。但在我看来,从下到上扫描树的效率很低。
任何想法如何处理它?
例如:我有两个字符串:st1=abab,st2=aab。在图片中,我制作了带有标记的广义后缀树。所以从带有字母a的节点我有一个来自他的子树的叶子代表st1的后缀,所以我将它标记为1,我有一个来自他的子树的叶子代表st2的后缀,所以我也将它标记为2。
【问题讨论】:
-
你能举个例子吗?
-
没有。仅仅因为它是关于后缀树的,并不意味着它是同一个问题。
-
如果要标记每个节点,则必须访问每个节点一次。所以自下而上的全扫描并不是一个糟糕的方法。 (如果给定节点的任何子节点标记为 1,则给定节点标记为 1)。
-
但是你如何从下到上扫描一棵树? casuse bfs 和 dfs 从上到下...
标签: algorithm suffix-tree