假设我有一组字母{a,b,c,t}和一个函数字典,它们返回T / F以检查英语词典中是否存在字符串。使用深度优先搜索构建有效单词。
我不是在这里要求任何代码。我需要一些树结构的帮助。我无法在这个问题中可视化树结构。
例如,对于s DFS,这四个字母可以在一个列中。那么我是否必须为所有可能的排列构造树,然后执行DFS?
编辑:我需要构建大小为3的单词。
示例:
a b
/ /
b c
/ /
c t
/ /
t a
答案 0 :(得分:1)
树状结构:
您可以构建一个树,每个节点代表字母表中的一个字母。节点可能会链接到字母表中的所有字母。
加载Dicitionary:
加载单词和构建树。来自单词的每个字母都会使我们从根开始遍历树。如果我们在其中一个链接中点击 null ,则创建新节点。
<强>用法强>:
然后直到第一个链接,直到你点击 endOfWord 标志,这将标出一个字。
typedef struct {
char *letter[ 26 ];
bool endOfWord;
}
根节点将为null作为起点。