深度优先搜索:给定一组字母构造有效字

时间:2017-01-31 16:29:19

标签: algorithm artificial-intelligence depth-first-search

假设我有一组字母{a,b,c,t}和一个函数字典,它们返回T / F以检查英语词典中是否存在字符串。使用深度优先搜索构建有效单词。

我不是在这里要求任何代码。我需要一些树结构的帮助。我无法在这个问题中可视化树结构。

例如,对于s DFS,这四个字母可以在一个列中。那么我是否必须为所有可能的排列构造树,然后执行DFS?

编辑:我需要构建大小为3的单词。

示例:

        a               b
       /               /
      b               c
     /               /
    c               t
   /               /
  t               a

1 个答案:

答案 0 :(得分:1)

树状结构:

您可以构建一个树,每个节点代表字母表中的一个字母。节点可能会链接到字母表中的所有字母。

加载Dicitionary:

加载单词和构建树。来自单词的每个字母都会使我们从根开始遍历树。如果我们在其中一个链接中点击 null ,则创建新节点。

<强>用法

然后直到第一个链接,直到你点击 endOfWord 标志,这将标出一个字。

typedef struct {
   char *letter[ 26 ];
   bool endOfWord;
}

根节点将为null作为起点。