我无法理解特里的概念.从"特里"维基百科条目我有这张图片:

如果我正确地看到这一点,则特里结构中的所有叶节点将拼写出整个单词,并且所有父节点都保持通向最终叶节点的字符.所以,如果我有一个名为DigitalTreeNode的类定义
public class DigitalTreeNode {
public boolean isAWord;
public String wordToHere; (compiles all the characters in a word together)
public Map<String, DTN> children;
}
Run Code Online (Sandbox Code Playgroud)
如果我想实现一个返回trie中最长单词的方法,它只需要在每个叶节点找到最长的单词吗?我如何实现如下方法:
public static String longestWord (DigitalTreeNode d);
Run Code Online (Sandbox Code Playgroud)
我猜它涉及设置一个最长的String变量,递归遍历每个节点并检查它是否是一个单词,如果它是一个单词并且它的长度大于最长变量那么longest = newWordLength.但是,我不确定地图中的孩子是如何适应的.如何使用上述方法找到任何特里结构中最长的单词?
如何在方法上抛出和UnsupportedOperationException?所以,如果我有一个Iterable对象,并且我试图禁止该对象的remove方法.
在下面的方法中,我返回一个可迭代的对象,其迭代器的删除我需要通过抛出UnsupportedErrorException来禁用.我可以在方法体内做到这一点或如何做到这一点?
public Iterable<String> getInNodes (String destinationNodeName) {
if (!hasNode(destinationNodeName))
return emptySetOfString;
else {
for(String e : nodeMap.get(destinationNodeName).inNodes)
{
emptySetOfString.add(e);
}
return emptySetOfString;
}
}
Run Code Online (Sandbox Code Playgroud) 你如何对固定信号值进行零延伸?
我有以下信号:
signal shamt: std_logic_vector(4 downto 0);
Run Code Online (Sandbox Code Playgroud)
在我将它分配给另一个大小为31 downto 0的变量之前,我必须将其扩展为shamt.我有以下代码,但我不确定它是否正确.
muxSOut <= conv_std_logic_vector(unsigned(shamt),32) when (muxSSel = '0') else A;
Run Code Online (Sandbox Code Playgroud)
我对部分conv_std_logic_vector(unsigned(shamt),32)持怀疑态度.
这会扩展shamt,它是5位大小到32位吗?因此,如果shamt是11011,它将只是27 0s然后是11011?如果没有,零延长shamt的正确方法是什么?