//递归方法:
//分治思想,逐一攻破
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; } } };