import java.util.*; /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode mergeKLists(ArrayList<ListNode> lists) { if (lists == null || lists.size() == 0) { return null; } ListNode headNode = null; for (int i = 0; i < lists.size(); i++) { headNode = connectListNode(headNode, lists.get(i)); } return headNode; } public ListNode connectListNode (ListNode node1, ListNode node2) { if (node1 == null || node2 == null) { return node1 == null ? node2 : node1; } if (node1.val < node2.val) { node1.next = connectListNode(node1.next, node2); return node1; } else { node2.next = connectListNode(node1, node2.next); return node2; } } }