我似乎无法找到问题的答案,所以我在这里。我有一个用文件中的字符串填充的树,需要计算一个字符串被看到的次数。所以一切正常,除了我正确计算字符串。 所以这里是我尝试计算每个字符串出现次数的代码。
/* Function for postorder traversal */
public void postorder(Scanner file)
{
postorder(root,file);
}
private void postorder(BSTNode r,Scanner file)
{
int counter = 0;
String key;
if (r != null)
{
key = file.next();
postorder(r.getLeft(),file);
postorder(r.getRight(),file);
if(key.compareTo(r.getData()) == 0)
{
counter++;
}
System.out.println(r.getData() +", " + counter);
}
}
如果它有帮助,这就是我得到的控制台的输出:
McGurkus, 0
Kircus, 0
call, 0
I'll, 0
I, 0
circus, 0
it, 0
my, 0
for, 0
put, 0
tents, 0
think, 0
the, 0
up, 0
to, 0
ready, 1
All, 1
一切都应该是1.我将非常感谢任何有助于我获得解决方案的帮助或指导。
答案 0 :(得分:0)
如果您的树已有数据,并且您正在遍历树以查找每个单词的频率,那么您需要该文件的用途是什么?
我不知道你的要求是什么,但我建议在关键是单词的类上保留一个数据结构(比如一个Map),值是你每次查看时更新的频率树节点。
类似的东西:
私人地图map = new HashMap();
private void postorder(BSTNode r)
{
String key;
if (r != null)
{
key = r.getData();
if(map.containsKey(key)){
Integer value = (Integer)map.get(key);
map.put(key, ++value);
}
postorder(r.getLeft(),file);
postorder(r.getRight(),file);
System.out.println(r.getData() +", " + counter);
}
}