バイナリ ツリーの幅優先トラバーサルの実装に問題があります。次の 2 行でクラス キャスト例外が発生し続けます。
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);
}
}