我在编写一个将字符串单词插入二叉树的方法时遇到了问题。以下代码是有问题的方法。基本上,如果单词尚未在树中(作为BinaryTreeNode
),则插入该单词,如果它在树中,则其频率(BinaryTreeNode
内的计数变量)增加1。我的问题是临时变量searchWord
。将其定义为String
会导致类型不匹配,并且没有为类型getFrequency()
定义String
的语句。泛型类型T
仅作为占位符存在 - 它也不起作用。那么它应该被定义为什么?
buildBinaryTree方法:
public static void buildBinaryTree(String word) {
//if word is already in tree
if(wordTree.contains(word)) {
//find existing word node
T searchWord = wordTree.find(word); //problem here
//increment frequency by 1
searchWord.setFrequency(searchWord.getFrequency() + 1);
} else {
//add word to tree
System.out.println(word);
wordTree.addElement(word);
}
}
BinaryTreeNode构造函数:
/**
* Creates a new tree node with the specified data.
* @param obj the element that will become a part of the new tree node
*/
BinaryTreeNode(T obj) {
element = obj;
left = null;
right = null;
frequency = 1;
}
频率获取/设定方法:
/**
* Gets the frequency.
* @return the frequency
*/
public int getFrequency() {
return frequency;
}
/**
* Sets the frequency.
* @param frequency the frequency to set
*/
public void setFrequency(int frequency) {
this.frequency = frequency;
}
答案 0 :(得分:1)
在聊天中讨论之后,您应该定义一个同时具有String
和int
的类作为要放置在二叉树中的类型,以替换类型变量{{1} }。然后,您可以定义诸如T
之类的方法以返回getString()
,String
以向频率添加一个等等。当您从二叉树中获取对象时,它将是调用这些方法的正确类型。