在字符串“AEKEAAEKEAAEKEA$
”上运行算法时,查找最少有3个子字符串的子字符串,后缀树中的所有节点都有最多2个分支,这怎么可能?
正确的结果应该是子串“AEKEA
”。
您可以在online suffix tree builder
中轻松查看树状结构我只是遵循维基百科的描述:
“找到至少k的最长子串的问题 可以通过首先预处理树来计算事件来找到事件 每个内部节点的叶子后代数,然后查找 最深的节点,至少有k个后代“
我在这里缺少什么?
谢谢。
答案 0 :(得分:3)
我不认为该网站是正确的。当我通过我的suffix tree运行'AEKEAAEKEAAEKEA'时,我得到以下树。
└── (0)
├── (27) $
├── (6) A
│ ├── (26) $
│ ├── (16) AEKEA
│ │ ├── (17) $
│ │ └── (7) AEKEA$
│ └── (18) EKEA
│ ├── (19) $
│ └── (8) AEKEA
│ ├── (9) $
│ └── (1) AEKEA$
├── (4) E
│ ├── (24) A
│ │ ├── (25) $
│ │ └── (14) AEKEA
│ │ ├── (15) $
│ │ └── (5) AEKEA$
│ └── (20) KEA
│ ├── (21) $
│ └── (10) AEKEA
│ ├── (11) $
│ └── (2) AEKEA$
└── (22) KEA
├── (23) $
└── (12) AEKEA
├── (13) $
└── (3) AEKEA$
从这个分支中可以看出,你找到了最长的子串,发生了3次。
└── (0)
├── (27) $
├── (6) A
│ ├── (26) $
│ ├── (16) AEKEA
│ │ ├── (17) $
│ │ └── (7) AEKEA$
│ └── (18) EKEA
│ ├── (19) $
│ └── (8) AEKEA
│ ├── (9) $
│ └── (1) AEKEA$