采用逐步遍历
public ListNode mergeKLists(ArrayList<ListNode> lists) {
ListNode root = new ListNode(-1);
for(int i = 0 ;i< lists.size();i++){
root.next = mergeTwoLists(root.next,lists.get(i));
}
return root.next;
}
private ListNode mergeTwoLists(ListNode head1,ListNode head2){
if(head1 == null || head2 == null){
return head1==null?head2:head1;
}
ListNode root = new ListNode(-1);
ListNode temp = root;
while(head1 != null && head2 != null){
if(head1.val > head2.val){
temp.next = head2;
temp = temp.next;
head2 = head2.next;
}
else
{
temp.next = head1;
temp = temp.next;
head1= head1.next;
}
}
if(head1 != null){
temp.next = head1;
}
else{
temp.next = head2;
}
return root.next;
}