C++ recursive insertion sort.
    \n    ListNode* insertionSortList(ListNode* head) {\n        if (head == nullptr || head->next == NULL)\n            return head;\n        ListNode *h = ins
        \n    ListNode* insertionSortList(ListNode* head) {\n        if (head == nullptr || head->next == NULL)\n            return head;\n        ListNode *h = insertionSortList(head->next);\n        if (head->val <= h->val) {  // first case\n            head->next = h;\n            return head;\n        }\n        ListNode *node = h;   // second case\n        while (node->next && head->val > node->next->val)\n            node = node->next;\n        head->next = node->next;\n        node->next = head;\n        return h;\n    }
['Recursion', 'C++']