private ListNode merge(ListNode l1, ListNode l2) {

    ListNode head = new ListNode(0);
    ListNode rst = head;

    boolean flag = true;
    while (l1 != null && l2 != null) {
      if (flag) {
        head.next = l1;
        l1 = l1.next;
      } else {
        head.next = l2;
        l2 = l2.next;
      }

      flag = !flag;
      head = head.next;
    }

    if (l1 == null) {
      head.next = l2;
    } else {
      head.next = l1;
    }

    return rst.next;
  }