数一数一共有几个目录
补全 dirs:递归数出目录的个数(根目录自己也算一个)。 (本题用 g++ -std=c++17 -O0 编译。)
最深的那一枝有几层
补全 deepest:返回这棵文件树最深有几层(根目录算第 1 层)。 (本题用 g++ -std=c++17 -O0 编译。)
某个文件藏在第几层
补全 level_of:递归找出某个文件在第几层(根目录算第 1 层),找不到返回 0。这次找的是 helper.py。 (本题用 g++ -std=c++17 -O0 编译。)
Trie 往下一层代表什么
前缀树(Trie)里,从一个节点往下走一步,代表【0】。
Trie 查前缀为什么快
第 1 步:空的前缀树 第 2 步:插入 cat:一个字符一层 第 3 步:插入 car:c、a 共用 第 4 步:插入 dog:另开一枝 第 5 步:查 ca:只走两步 第 6 步:a 下面挂着 2 个词 · c a t r d o g
走完 c-a-t 是不是一个词
词库里有 cat、car、card、dog。运行下面这段程序: #include <iostream> #include <map> #include <string> using namespace s
走完 c-a 之后呢
同一个词库。运行下面这段程序: #include <iostream> #include <map> #include <string> using namespace std; struct Trie
把词一个个插进前缀树
补全 trie_insert:沿着每个字符往下走,没有的路就现开一条,走到词尾把 end 标成 true。四个词全插完之后,输出根下面有几条不同的分支。 (本题用 g++ -std=c++17 -O0 编译。)
查一个完整的词在不在
补全 trie_search:整个词都在、而且末尾有标记才算在。查 car,输出结果。 (本题用 g++ -std=c++17 -O0 编译。)
是前缀但不是词
同一个 trie_search,这次查 ca。它是 cat / car / card 三个词的开头,但它自己不是一个词——下面这版少了末尾标记的判断,会答错,把它改对。 (本题用 g++ -std=c++17 -O0 编译。)