使用TreeNodes扩展可比较的广度优先二叉树搜索

时间:2013-11-15 02:55:03

标签: java binary-search-tree comparable

我在为二叉树实现宽度优先遍历时遇到问题。我一直在这两行获得一个类强制转换异常:

        if(node.left != null) queue.offer(node.left);
        if(node.right != null) queue.offer(node.right);

异常说:“TreeNode无法强制转换为java.lang.Comparable” 我需要针对此类的其他方法的extends Comparable,有关如何解决此问题的任何建议吗?谢谢!

public class TreeNode<E extends Comparable<E>> {

private TreeNode<E> left;
private TreeNode<E> right;
private E value;


public TreeNode(E value) 
{
    this.value = value;
}

    public void breadthFirstTraversal(TreeNode<E> root, ArrayList<E> breadthList)
{
    Queue<TreeNode<E>> queue = new PriorityQueue<TreeNode<E>>();
    if (root == null)
        return;
    queue.clear();
    queue.offer(root);
    while(!queue.isEmpty())
    {
        TreeNode<E> node = queue.remove();
        breadthList.add(node.value);
        if(node.left != null) queue.offer(node.left);
        if(node.right != null) queue.offer(node.right);
    }
}

1 个答案:

答案 0 :(得分:1)

你有:

public class TreeNode<E extends Comparable<E>>

这只表示E中的TreeNode<E>应该实现Comparable,而不是TreeNode本身应该实现的TreeNode。为此,您需要以通常的方式Comparable实现public class TreeNode<E extends Comparable<E>> implements Comparable<TreeNode<E>>

{{1}}

并添加适当的覆盖。