public static Node deleteAll(Node front, String target){
if (front == null){ return null;}
if (front.data.equals(target)){
return deleteAll(front.next,target);
}
front.next=deleteAll(front.next,target);
return front;
}
我正在尝试解决此问题,但这使我感到困惑。为什么不总是将其生成为null,因为最后的前端将等于null。
最佳答案
考虑此类问题时,最好先拿一支笔和纸画些东西,然后再进行深思熟虑。
例如
......
输入
list :[3]-[2]-[5]-空
目标:2
................
首次通话=>结果deleteAll(N[3], 2) => [3]
但是接下来是deleteAll(N[2], 2)
List = [3]-deleteAll(N[2], 2)
第二次通话deleteAll(N[2], 2) => deleteAll(N[5], 2)
下一个节点现在跳过2List = [3]-deleteAll(N[5], 2)
第三次通话deleteAll(N[5], 2) => [5]
但是接下来是deleteAll(null,2)List = [3]-[5]-deleteAll(null, 2)
延迟调用返回null
列表最终没有2s干净List = [3]-[5]-null
关于java - 递归删除链表中所有出现的项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48724753/