递归方法,多个单增链表合并为一个单增链表

版权声明:此为原创内容,谢绝转载,违者必究 https://blog.csdn.net/dq1711727964/article/details/82119309

递归方法,多个单增链表合并为一个单增链表

存在两个或多个在链表内单调递增的链表,需要将其合并成一个仍然单调递增的链表,且不损失任何数据。

需要合并的链表结构


public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}

合并算法


public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}//链表原结构定义

public class Solution {
    public ListNode Merge(ListNode list1,ListNode list2) {
        if(list1==null||list2==null)
            return list1==null?list2:list1;//判断到达链表结尾,方法把较大的节点连接在较小的节点后,然后直接返回较小的链表节点

        if(list1.val>list2.val){//将两个链表的两个节点比较
            list2.next=Merge(list1, list2.next);//将较大的节点与较小的节点后方的节点放入递归比较
            return list2;//函数返回较小的节点
        }
        else{
            list1.next=Merge(list1.next, list2);//同上
            return list1;//同上
        }
    }
}

猜你喜欢

转载自blog.csdn.net/dq1711727964/article/details/82119309
今日推荐