在java中遍历二叉树时,依赖于根目录

时间:2016-11-16 05:01:11

标签: java algorithm tree

这是我在这里的第一个问题,请耐心等待我!

我试图遍历一个不平衡的二叉树,每个节点包含一个字符串和一个计数器作为数据。计数器计算文本文件中字符串的出现次数。

这是我的遍历方法:

{{1}}

请记住,car,current和next被初始化为WordCount空对象,其默认构造函数为其计数器变量赋值1。最大值也分配给0。

我将树的根作为WordCount方法中的根参数传递,但我总是得到最常用的单词作为树的根。 似乎我的方法不能正常运行。也许我的条件或递归有问题。

任何帮助将不胜感激

1 个答案:

答案 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不能在这里使用,因为你在其他地方停留,不管是左分支还是右分支,它不会保证最常用的字数。

您使用了许多中间变量,例如currentnext,这些变量不仅不必要,而且使代码变得混乱和复杂。

修改

考虑到WordCount的树是有效的,并且正如您所期望的那样保存信息,该片段应该可以正常工作。否则,可能会出现其他问题,例如getCount()getLeftChild() API错误或信息不正确,因为您假设每个节点。