这是我在这里的第一个问题,请耐心等待我!
我试图遍历一个不平衡的二叉树,每个节点包含一个字符串和一个计数器作为数据。计数器计算文本文件中字符串的出现次数。
这是我的遍历方法:
{{1}}
请记住,car,current和next被初始化为WordCount空对象,其默认构造函数为其计数器变量赋值1。最大值也分配给0。
我将树的根作为WordCount方法中的根参数传递,但我总是得到最常用的单词作为树的根。 似乎我的方法不能正常运行。也许我的条件或递归有问题。
任何帮助将不胜感激
答案 0 :(得分:0)
这应该有效!
// Assuming max and var are some global variables
public WordCount traverse(WordCount root) {
if(root == null) {
max = 0;
return root;
}
if (root.getCount() > max) {
var = root;
max = root.getCount();
}
if (root.getLeftChild() != null) {
traverse( root.getLeftChild() );
}
if (root.getRightChild() != null) {
traverse( root.getRightChild() );
}
return var;
}
我们必须遍历左右子树以最大化我们的词频搜索。所以else
不能在这里使用,因为你在其他地方停留,不管是左分支还是右分支,它不会保证最常用的字数。
您使用了许多中间变量,例如current
,next
,这些变量不仅不必要,而且使代码变得混乱和复杂。
考虑到WordCount
的树是有效的,并且正如您所期望的那样保存信息,该片段应该可以正常工作。否则,可能会出现其他问题,例如getCount()
,getLeftChild()
API错误或信息不正确,因为您假设每个节点。