0

我在为我的二叉树实现广度优先遍历时遇到问题。我在这两行中不断收到类转换异常:

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

异常说:“TreeNode 不能转换为 java.lang.Comparable”我需要扩展 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);
    }
}
4

1 回答 1

1

你有:

public class TreeNode<E extends Comparable<E>>

这只是说EinTreeNode<E>应该实现Comparable,而不是它TreeNode本身应该实现。为此,您需要以通常的方式TreeNode实施:Comparable

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

并添加适当的覆盖。

于 2013-11-15T02:56:51.387 回答