public class Leetcode_21_Merge_Two_Sorted_Lists {
public static ListNode mergeTwoLists(ListNode list1, ListNode list2) {
ListNode result = new ListNode();
ListNode head = result;
while(! (list1 == null && list2 == null)){
int val1 = 101, val2=101;
if(list1 != null) val1 = list1.val;
if(list2 != null) val2 = list2.val;
System.out.println(val1 + " " + val2);
ListNode temp = new ListNode();
if(val1 <= val2){
temp.val = val1;
list1 = list1.next;
}else{
temp.val = val2;
list2 = list2.next;
}
result.next = temp;
result = result.next;
}
return head.next;
}
}
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;
}
}
2.recrusive 방식
재귀는 한참 보아도 어렵다.
대소비교를 해서 작은 노드의 next를 다시 재귀적으로 돌린다.
그렇다면 null이 되는 순간들로부터 다시 반환점을 돈다.