一些应用递归的简单示例

小感触 2020年03月11日 210次浏览

删除链表中等于给定值 val 的所有节点。示例:

输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
public class Main{
    //用递归的角度,仅分析当前一次删除的过程。
    public ListNode remove(ListNode head, int v) {
	//如果这个要删除的节点本来就不存在,那么直接返回null.
        if (head == null) {
            return null;
        }
	//忽略“当前节点”,先搞定当前节点之后的其他节点删除工作。
        head.next = remove(head.next, v);
	//在其他节点移除完成之后,判断当前节点是否要被删除。
        return head.val == v ? head.next : head;
    }
    static class ListNode{
        int val;
        ListNode next;
        public ListNode(int val) {
            this.val = val;
        }
    }
}