计算树中出现的次数
Counting Occurrences in a tree
我似乎找不到问题的答案,所以我来了。我有一棵树,里面填满了文件中的字符串,需要计算一个字符串被看到的次数。所以一切正常,除了我正确地计算字符串。
所以这是我尝试计算每个字符串出现次数的代码。
/* 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。非常感谢任何对我可以得出解决方案的帮助或指导。
如果您的树已经有了数据,并且您正在遍历树以查找每个单词的频率,那么您需要该文件有什么用?
我不知道你的要求是什么,但我建议在 class 上保留一个数据结构(比如地图),其中键是单词,值是频率每当您查看树节点时都会更新。
类似于:
private 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);
}
}
我似乎找不到问题的答案,所以我来了。我有一棵树,里面填满了文件中的字符串,需要计算一个字符串被看到的次数。所以一切正常,除了我正确地计算字符串。 所以这是我尝试计算每个字符串出现次数的代码。
/* 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。非常感谢任何对我可以得出解决方案的帮助或指导。
如果您的树已经有了数据,并且您正在遍历树以查找每个单词的频率,那么您需要该文件有什么用?
我不知道你的要求是什么,但我建议在 class 上保留一个数据结构(比如地图),其中键是单词,值是频率每当您查看树节点时都会更新。
类似于:
private 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);
}
}