gpt4 book ai didi

java - 使用 Java PriorityQueue 实现级别顺序遍历二叉搜索树时出错

转载 作者:行者123 更新时间:2023-12-01 12:14:31 25 4
gpt4 key购买 nike

我正在尝试为我的 BST 实现级别顺序遍历,但出现了一个奇怪的错误。这是代码:

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

}

}

当我尝试运行它时,出现此错误

线程“main”中出现异常 java.lang.ClassCastException:节点无法转换为 java.lang.Comparable

focusNode.rightChild 添加到 nextLevel 队列的行,或 nextLevel.add(focusNode.rightChild);

我不确定为什么会发生此错误,因此我们将不胜感激。

最佳答案

线程“main”java.lang.ClassCastException中的异常:节点无法转换为java.lang.Comparable意味着您必须实现java.lang.Comparable接口(interface)你的 Node 类(类似于:

public class Node implements Comparable {
//...
})

) 使您的 Node 对象与其他节点具有可比性。

关于java - 使用 Java PriorityQueue 实现级别顺序遍历二叉搜索树时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27093481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com