讨论/《递归》 - 两两交换链表中的节点/
《递归》 - 两两交换链表中的节点

主要是理清递归前后节点间的关系

public ListNode swapPairs(ListNode head) {
        if (head == null) return null;
        ListNode ln = new ListNode();
        ln.next = head;
        swap(head, ln);
        return ln.next;
    }

    public void swap(ListNode head, ListNode lastNode) {
        ListNode temp = null;
        if (head.next != null) {
            temp = head.next;
            head.next = temp.next;
            temp.next = head;
            lastNode.next = temp;
        }
        if (temp == null) {
            return;
        }
        if (temp.next.next != null) {
            swap(temp.next.next, temp.next);
        }
    }
展开全部 8 讨论