1번째 노드와 2번째 노드의 순서를 교환하면 되는 문제이다.
복잡한 구현이 필요없이 재귀적으로 호출되게 풀이하였음
즉 뒤에서부터 두 요소 씩 순서를 변경하여 초기 head를 마지막 교환하여 완료하는 방식
function swapPairs(head: ListNode | null): ListNode | null {
// 헤드가 null이거나 다음 노드가 없으면 그대로 반환
if (head === null || head.next === null) {
return head;
}
// 첫 번째와 두 번째 노드를 가리키는 포인터
let firstNode = head;
let secondNode = head.next;
// 첫 번째 노드를 두 번째 노드의 다음 노드와 연결
firstNode.next = swapPairs(secondNode.next);
// 두 번째 노드를 첫 번째 노드와 연결
secondNode.next = firstNode;
// 교환된 쌍의 새로운 헤드(원래의 두 번째 노드)를 반환
return secondNode;
}