重要题型整理:数据结构与算法——高级数据结构

重要题型整理:数据结构与算法——高级数据结构

广义表

  1. (数据结构与算法mooc)数组a在C语言中的定义为“int a[25][15][10]”。假设a[0][0][0]的地址为4000,则a[5][9][4]的地址为____。

解析:7376
注意int型!!!还要乘4!!!

Trie树

后缀树

相关应用:最长回文子串

  1. 下面是字符串WINDOW和INDIGO的所有后缀串组成的后缀树示意图(压缩了单路径的Trie)。请回答以下问题
    (1)请描述在这棵后缀树中,寻找两个字符串的最长公共前缀子串(Longest Common Prefix,简称lcp)的算法思想。lcp(i, j), i和j分别为第一个串和第二个串起始下标,Lcp是指从下标i(或j)开始到字符串结尾对应字符串的最大公共前缀。例如,对于WINDOW和INDIGO两个串,lce(0, 1) =“”; lce(1,0) = “IND”。
    重要题型整理:数据结构与算法——高级数据结构_第1张图片
    (2)请阐述加特殊符号‘$’的理由

参考答案:
(1)算法描述
1.Build generalized suffix tree, T, of S1 and S2 (这一点不提没关系)x
2.Compute string depth for each node in T
3.Preprocess T for lca queries
(1)The lowest common ancestor (lca) of two nodes x and y in a rooted tree is the deepest node (farthest away from root) that is an ancestor of both x and y
(2)Concatenation of edge labels from root to the lca of two leaves spells out the longest common prefix (lcp) of two strings
4.lce(i,j) = string depth of lca of suffix i ofS1 and suffix j ofS2
(2)加$是为了判断子串的结束。

你可能感兴趣的:(重要题型整理)