二叉树变量类型问题

时间:2012-04-10 03:26:16

标签: java tree binary-tree

我在编写一个将字符串单词插入二叉树的方法时遇到了问题。以下代码是有问题的方法。基本上,如果单词尚未在树中(作为BinaryTreeNode),则插入该单词,如果它在树中,则其频率(BinaryTreeNode内的计数变量)增加1。我的问题是临时变量searchWord。将其定义为String会导致类型不匹配,并且没有为类型getFrequency()定义String的语句。泛型类型T仅作为占位符存在 - 它也不起作用。那么它应该被定义为什么?

buildBinaryTree方法:

public static void buildBinaryTree(String word) {
    //if word is already in tree
    if(wordTree.contains(word)) {
        //find existing word node
        T searchWord = wordTree.find(word);  //problem here

        //increment frequency by 1
        searchWord.setFrequency(searchWord.getFrequency() + 1);
    } else {
        //add word to tree
        System.out.println(word);
        wordTree.addElement(word);
    }
}

BinaryTreeNode构造函数:

/**
 * Creates a new tree node with the specified data.
 * @param obj the element that will become a part of the new tree node
 */
BinaryTreeNode(T obj) {
   element = obj;
   left = null;
   right = null;
   frequency = 1;
}

频率获取/设定方法:

/**
 * Gets the frequency.
 * @return the frequency
 */
public int getFrequency() {
   return frequency;
}

/**
 * Sets the frequency.
 * @param frequency the frequency to set
 */
public void setFrequency(int frequency) {
   this.frequency = frequency;
}

1 个答案:

答案 0 :(得分:1)

在聊天中讨论之后,您应该定义一个同时具有Stringint的类作为要放置在二叉树中的类型,以替换类型变量{{1} }。然后,您可以定义诸如T之类的方法以返回getString()String以向频率添加一个等等。当您从二叉树中获取对象时,它将是调用这些方法的正确类型。