【问题标题】:Breadth First Binary Tree Search using TreeNodes Extending Comparable使用 TreeNodes 扩展 Comparable 的广度优先二叉树搜索
【发布时间】:2013-11-15 10:56:51
【问题描述】:

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

        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);
    }
}

【问题讨论】:

    标签: java binary-search-tree comparable


    【解决方案1】:

    你有:

    public class TreeNode<E extends Comparable<E>>
    

    这只是说TreeNode&lt;E&gt; 中的E 应该实现Comparable,而不是TreeNode 本身应该实现。为此,您需要使 TreeNode 以通常的方式实现 Comparable

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

    并添加适当的覆盖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      • 1970-01-01
      相关资源
      最近更新 更多