刷题日记-JZ25合并有序链表

合并有序链表 递归方式合并链表pHead1,pHead2
base case是 pHead1为空或者pHead2为空

递归方式是
如果pHead1->val < pHead2->val 则
pHead1结点作为新链表的头结点,即mergeNode = pHead1;
同时pHead1->next继续向下递归,因为pHead1->next这个节点也有可能小于pHead2
mergeNode->next = Merge(pHead1->next, pHead2);

否则即else 相反处理pHead2

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
        //递归合并
        
        if(!pHead1) return pHead2;
        if(!pHead2) return pHead1;
        if(!pHead1 && !pHead2) return NULL;
        ListNode* mergeNode = NULL;
        if(pHead1->val<pHead2->val)
        {
            mergeNode = pHead1;
            mergeNode->next  = Merge(pHead1->next, pHead2); //继续比较下一个结点
        }
        else
        {
            mergeNode = pHead2;
            mergeNode->next  = Merge(pHead1,pHead2->next);
        }
        return mergeNode;
    }
};
posted @ 2021-10-01 10:49  勒勒乐了  阅读(33)  评论(0)    收藏  举报