Я пытаюсь реализовать обход уровня для моего BST, но я получаю странную ошибку. Вот код:Ошибка реализации двоичного дерева поиска порядка с Java PriorityQueue
public void levelOrderTraverseTree(Node focusNode) {
PriorityQueue<Node> currentLevel = new PriorityQueue<Node>();
PriorityQueue<Node> nextLevel = new PriorityQueue<Node>();
currentLevel.add(focusNode);
while (!currentLevel.isEmpty()) {
Iterator<Node> iter = currentLevel.iterator();
while (iter.hasNext()) {
Node currNode = iter.next();
System.out.println(currentLevel.remove());
System.out.println("adding "+currNode.leftChild+"to nextLevel");
nextLevel.add(focusNode.leftChild);
System.out.println("adding "+currNode.rightChild+"to nextLevel");
nextLevel.add(focusNode.rightChild);
}
currentLevel = nextLevel;
nextLevel.clear();
}
}
Когда я пытаюсь запустить его, я получаю эту ошибку
Exception in thread "main" java.lang.ClassCastException: Node cannot be cast to java.lang.Comparable
на линии, которая добавляет focusNode.rightChild
к nextLevel
очереди, или nextLevel.add(focusNode.rightChild);
Я не уверен, почему эта ошибка происходит, поэтому любое понимание будет оценено по достоинству.
Это решило мою проблему! Большое спасибо. – Zach
Отлично! :) Пожалуйста, примите мой ответ! : D –
Пришлось ждать предела времени, принял его сейчас – Zach