java - 添加到链表的方法无法正常工作
问题描述
我正在编写一个代码来在二叉树中搜索并添加当前节点的正确节点,一切都很完美,因为它打印了消息,所以它证明它可以工作,但我不知道为什么它没有将元素添加到尽管它实际上工作正常,但该列表。我正在递归地工作,但我没有找到错误。println 不是很重要,仅用于验证。
public List<E> equiposEliminados(E seleccion){
return equiposEliminados(seleccion, root);
}
private List<E> equiposEliminados(E seleccion, Node<E> n){
List<E> listaEquipos = new LinkedList<>();
System.out.println("Nodo actual: "+n.data);
if(n.right != null && n.data.equals(seleccion)){
System.out.println("Nodo n (dentro del if): "+n.data);
System.out.println("Nodo derecho de n (dentro del if): "+n.right.data);
listaEquipos.add(n.right.data);
}
if(n.left != null && n.left.data.equals(seleccion)){
n = n.left;
System.out.println("Proximo nodo(nodo izquierdo del actual): "+n.data);
return equiposEliminados(seleccion, n);
}
else if(n.right != null && n.right.data.equals(seleccion)){
n = n.right;
System.out.println("Proximo nodo(nodo derecho del actual): "+n.data);
return equiposEliminados(seleccion, n);
}
return listaEquipos;
}
解决方案
这是因为List<E> listaEquipos = new LinkedList<>();
是递归函数的一部分equiposEliminados(E seleccion, Node<E> n)
,所以每次都会被清除。在递归函数之外初始化列表。
是的,您可以将 listaEquipos 作为另一个参数传递给equiposEliminados(E seleccion, Node<E> n)
.
List<E> listaEquipos = new LinkedList<>()
然后初始化
public List<E> equiposEliminados(E seleccion){
在 return 语句中调用递归函数之前。
像下面这样
public List<E> equiposEliminados(E seleccion){
List<E> listaEquipos = new LinkedList<>();
return equiposEliminados(seleccion, root, listaEquipos);
}
private List<E> equiposEliminados(E seleccion, Node<E> n, List<E> listaEquipos){
System.out.println("Nodo actual: "+n.data);
希望这可以帮助
推荐阅读
- html - 悬停后保持选中元素
- python - PubNub 和 Python 的 multiprocessing.Process 不兼容?
- java - 使用正则表达式从 Grafana 表达式中检索 Prometheus 指标名称
- ios - 搜索栏点击后向下移动(iOS)
- symfony - Symfony 4 setter 注入在有或没有自动装配的情况下都不能工作
- python - How can I edit data fetched from db in html table ? Flask, Jinja2
- mysql - 如何通过关键字搜索 MySQL
- android - 如何在 3*3 的 gridview 布局中设置随机图像
- angular - 使用 npm start 运行我的 jhipster 应用程序时出现错误
- android - IONIC apk 生成问题