首先原则是由内向外,最深层递归边界为尾节点的前一个节点,所以代码开头的边界控制条件为head==null(空链表)||head.next==null(尾结点,尾结点直接返回自己 不需要处理尾结点的下一个节点)。
然后每一个节点的操作都是将节点的下一个节点指向自己,然后断链使当前节点不在指向原链表中的下一个节点。
if(head==null||head.next==null){ return head; }
边界控制:空链表返回空,最后一个节点不用处理直接返回自身。
ListNode newHead=reverseList(head.next);
实际上newhead指的一直都是最后一个节点,递归调用这一行 ListNode newHead=reverseList(head.next);的作用主要是由外向内找最深处的尾节点 再由内向外返回被处理完的链表