📅  最后修改于: 2023-12-03 15:06:59.131000             🧑  作者: Mango
当操作一个排序的链表时,可能会遇到有重复项的情况。我们需要写一个递归函数来删除这些重复项。
我们需要递归地遍历整个链表,并将重复的节点删除。具体步骤如下:
如果当前节点是空节点或下一个节点是空节点,则返回当前节点。
如果下一个节点的值与当前节点的值相同,则跳过下一个节点。
否则,将当前节点的下一个节点设置为下一个节点的下一个节点,并递归调用函数。
返回当前节点。
下面是使用 Python 语言实现的代码示例:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
if not head or not head.next:
return head
if head.val == head.next.val:
head = self.deleteDuplicates(head.next)
else:
head.next = self.deleteDuplicates(head.next)
return head
递归是一个非常强大的工具,可以在处理链表等数据结构时帮助我们避免使用复杂的迭代语句。但是,我们需要仔细考虑问题,确保不会陷入无限递归的死循环中。