计算树中的出现次数

时间:2015-04-24 00:13:03

标签: java 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.我将非常感谢任何有助于我获得解决方案的帮助或指导。

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); 
     }
 }