【发布时间】:2015-04-24 00:13:03
【问题描述】:
我似乎找不到问题的答案,所以我在这里。我有一棵树,它已经用文件中的字符串填充了,需要计算一个字符串被看到的次数。所以一切正常,除了我数数正确。 所以这是我尝试计算每个字符串出现次数的代码。
/* 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。任何帮助或指导我可以从哪里获得解决方案将不胜感激。
【问题讨论】:
-
这里可能需要多看一点代码,比如
r.getData()返回什么数据类型? (将println上面的一行移动到第二级if块内可能???)输入文件是什么样的? -
显然,比较有问题,它没有返回零,因此没有增加
counter,而counter等于零。我会通过观察key是什么来开始调试。 -
@BretC
r.getData()显然是节点的内容(类型String)@Adriel dwood 我猜问题是从文件生成的树不同,而不是你在你的后序法。能否请您发布生成树的方法 -
@Paul 只是检查 ;)
-
您在遍历树时迭代文件键:只有当树以与此处读取的相同 DFS 顺序填充时,您才会获得匹配项;您的方法所做的是检查树和文件是否是相同的数据。如果要计算出现次数,则需要使用 Map
(key,count)