public class Solution {
public ListNode mergeTwoLists(ListNode root0, ListNode root1) {
if (root0 == null)
return root1;
if (root1 == null)
return root0;
ListNode head = null;
ListNode p = null;
if (root0.val < root1.val) {
head = new ListNode(root0.val);
p = head;
root0 = root0.next;
} else if (root0.val > root1.val) {
head = new ListNode(root1.val);
p = head;
root1 = root1.next;
} else {
head = new ListNode(root0.val);
p = head;
p.next = new ListNode(root1.val);
p = p.next;
root1 = root1.next;
root0 = root0.next;
}
while (root0 != null && root1 != null) {
if (root0.val < root1.val) {
p.next = new ListNode(root0.val);
root0 = root0.next;
} else if (root0.val > root1.val) {
p.next = new ListNode(root1.val);
root1 = root1.next;
} else {
p.next = new ListNode(root1.val);
p = p.next;
p.next = new ListNode(root0.val);
root1 = root1.next;
root0 = root0.next;
}
p = p.next;
}
while(root0!=null){
p.next = new ListNode(root0.val);
p = p.next;
root0 = root0.next;
}
while(root1!=null){
p.next = new ListNode(root1.val);
p = p.next;
root1 = root1.next;
}
return head;
}
}