递归删除链接列表中所有出现的项目

dog*_*d45 5 java recursion linked-list

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;
}
Run Code Online (Sandbox Code Playgroud)

我正试图通过这个解决方案,但这让我感到困惑.为什么它不总是以null结果,因为在结尾前面将等于null.

Jos*_*isb 3

当思考这些问题时,最好拿笔和纸画一些东西并在高层次上思考

例如
............
输入
列表:[3]-[2]-[5]-null
目标:2
............ ..

第一次调用 => 结果

deleteAll(N[3], 2) => [3]
但接下来是现在deleteAll(N[2], 2)
List = [3]-deleteAll(N[2], 2)

第二次通话

deleteAll(N[2], 2) => deleteAll(N[5], 2)
下一个节点现在跳过 2
List = [3]-deleteAll(N[5], 2)

第三次通话

deleteAll(N[5], 2) => [5]
但下一个现在是deleteAll(null, 2)
List = [3]-[5]-deleteAll(null, 2)

Lat 调用返回 null

列表最终干净,没有 2 秒
List = [3]-[5]-null