gpt4 book ai didi

java - 需要一个包含 Queue.Node 的封闭实例

转载 作者:太空宇宙 更新时间:2023-11-04 07:35:18 24 4
gpt4 key购买 nike

所以我正在研究二叉搜索树,并且需要进行级别顺序遍历。我将打印出同一级别的所有键。

我现在遇到的问题是我需要创建一个 FIFO 队列。我已创建队列,但当我尝试将节点添加到队列时,我不断收到 需要包含 Queue.Node 的封闭实例 错误消息。有人可以帮我解决我做错的事情吗?

这是我目前的关卡顺序遍历。

public void LevelOrder_Traversal(BST_Node node){
Queue temp=new Queue();


Queue.Node newNode=new Queue.Node();

temp.enqueue(node);

这是我的队列类

public class Queue{
public class Node{
private Integer key;
private Node next;

public Node(){
this.key=null;
this.next=null;
}

public Node(int key){
this.key=key;
this.next=null;
}
}

int size;
Node head;

public Queue(){
head=new Node();
size=0;
}

public void enqueue(Node node){
if(size==0){
head=node;
}

Node curr=head;
while(curr.next!=null){
curr=curr.next;
}
curr.next=node;
size++;
}

public Node dequeue(){
Node temp=head;
head=head.next;
size--;

return temp;
}
}

我发现了一些与我正在做的事情类似的其他帖子,但我并没有真正理解它们。如果有人能好心地解释我做错了什么以及为什么错了,那就太好了。我需要扩展 Queue 类或类似的东西吗?

最佳答案

这是因为您的 Node 内部类是非静态的。 Java 中的非静态类具有对其封闭类的隐式引用,因此必须通过外部类的实例方法来实例化它们。像这样实例化它

Queue.Node newNode=new Queue.Node();

无效,即使 Node 类是 public

使用 static 关键字声明它可以解决此编译问题:逻辑上可以将该类设为static,因为它的方法不需要了解封闭的 Queue 类。

关于java - 需要一个包含 Queue.Node 的封闭实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16974397/

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