解题思路:
1.首先明确递归函数是干什么的,在这里它是返回一个链表
2.递归终止条件,当一条链表遇到空的时候,说明这条链表已经比较完,此时,返回另一条链表剩余的结点即可
3.寻找“等量”关系式,l1.next = mergeTwoLists(l1.next,l2); 和l2.next = mergeTwoLists(l1,l2.next);其实就是:最终的链表 = 好多个mergeTwoLists()加起来
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1 == null)
return l2; //一个链表空,返回另一个链表
if(l2 == null)
return l1;
if(l1.val < l2.val){
l1.next = mergeTwoLists(l1.next,l2);//比较完就去掉一个结点
return l1;
}else{
l2.next = mergeTwoLists(l1,l2.next);//比较完就去掉一个结点
return l2;
}
}
}