递归方法图示:
package June;
public class 链表递增合并 {
// 注意:此时并没有说明哪一个链表比较短
// 递归方式
public ListNode Merge(ListNode list1, ListNode list2) {
if(list1==null) return list2;
if(list2==null) return list1;
ListNode res=null;
if(list1.val<list2.val){
res=list1;
res.next=Merge(list1.next,list2);
}else{
res=list2;
res.next=Merge(list1,list2.next);
}
return res;
}
/* //非递归方法
public ListNode Merge(ListNode list1, ListNode list2) {
//此时定义一个去遍历的节点,-1是随便取的值
ListNode head=new ListNode(-1);
head.next=null;
//头节点最后返回这个节点的.next就是合并后的节点,
ListNode root=head;
//遍历到其中一个链表结束
while(list1!=null&&list2!=null){
//如果list1>list2,list2放前面
if(list1.val>list2.val){
head.next=list2;
head=list2;
list2=list2.next;
}
else{
head.next=list1;
head=list1;
list1=list1.next;
}
}
//然后拼接剩下的链表
if(list1!=null) head.next=list1;
if(list2!=null) head.next=list2;
return root.next;
}*/
}