311 合并有序链表2 #
- 构造链表
- 合并有序链表的实现
构造链表 #
每个结点存在一个值和一个指向下一个结点的指针
class ListNode: def __init__(self, x): self.val = x self.next = None
合并有序链表的实现 #
采用递归方式合并链表,合并后递归输出结果
class ListNode: def __init__(self, x): self.val = x self.next = None def mergeTwoLists(l1, l2): if l1 is None: return l2 elif l2 is None: return l1 elif l1.val < l2.val: l1.next = mergeTwoLists(l1.next, l2) return l1 else: l2.next = mergeTwoLists(l1, l2.next) return l2 def printListNode(L): if(L is not None): print(L.val) printListNode(L.next) l1 = ListNode(1) l1.next = ListNode(2) l1.next.next = ListNode(4) l2 = ListNode(1) l2.next = ListNode(3) l2.next.next = ListNode(4) printListNode( mergeTwoLists(l1,l2) )
小结 #
习题 #
- 思考递归中是如何保证返回的是合并链表的头结点的
- 尝试使用迭代方式完成合并