【发布时间】:2014-10-06 11:52:56
【问题描述】:
好吧,我有一个相当简单的问题,但我似乎无法找到解决办法......
对于一个类,我必须为具有如下方法的二叉树实现一个接口:
public List<Node<E>> listAll();
我们需要有一个名为 MyNode.java 的类,我用它来制作我的树。所以列出所有我认为我会这样做的孩子:
public List<Node<E>> listAll(){
List<Node<E>> childList = new ArrayList<>();
MyNode<E> thisNode = this.l;
while(thisNode!= null){
childList.add(thisNode);
thisNode = thisNode.l;
}
return childList;
}
并做一些事情,比如设置一个孩子
public void setChild(Node<E> child){
E elem = child.getElement();
MyNode<E> newNode = new MyNode(elem);
this.l = newNode;
}
所以我的问题是:我这样做对吗?如果我尝试创建一个节点,我不能,因为我的节点被称为 MyNodes 但是当我尝试创建一个 MyNodes 列表并返回它们时,它会给我一个错误,因为我没有遵循界面。当我尝试制作该方法接受 MyNode 而不是 Node 它说我没有遵循界面。下面再澄清一点..
我目前正在使用 implements 声明来实现 Node.java 接口。当我编写接口指定的方法时:
public void setChild(Node<E> child);
那么我目前正在充实该方法:
public void setChild(Node<E> child) {
E elem = child.getElement();
MyNode<E> newNode = new MyNode<E>(elem);
MyNode<E> transNode = this.l;
if(transNode!=null){
while(transNode.r!=null){
transNode = transNode.r;
}
transNode = newNode;
}
else transNode = newNode;
}
你可以看到我是如何从输入子元素中获取元素并从中创建一个新的 MyNode 以作为新子元素放置的,而不是仅仅将 Node 注入到我的树中。这是错误的吗?我似乎找不到其他工作方式...
【问题讨论】: