//递归方法:
//分治思想,逐一攻破

class Solution {

public:
    ListNode *mergeKLists(vector<ListNode *> &lists) {
        if(lists.size() == 0)
            return nullptr;
        ListNode* head = nullptr;
        for(int i = 0; i < lists.size(); ++i){
            head = connectList(head, lists[i]);
        }
        return head;
    }

    ListNode* connectList(ListNode* p1, ListNode* p2){ //两两比较
        if(p1 == nullptr || p2 == nullptr)
            return p1 == nullptr ? p2 : p1;
        if(p1->val < p2->val){
            p1->next = connectList(p1->next, p2);
            return p1;
        }
        else{
            p2->next = connectList(p1, p2->next);
            return p2;
        }
    }
};