数据结构-链表

226 阅读1分钟

一、递归的本质 -宏观语义

  1. 求解最基本的问题
  2. 把原问题转为更小的问题

注意: 递归函数就是一个函数,完成一个功能


二、链表的天然递归性

可以理解为一个链表为一个head -> 更短的链表


三、解决问题:

删除链表中重复的元素

public Node remove(ListNode head, int val){
    if(head == null){
        return null;
    }
    head.next = remove(head.next, val);
    //处理此时head节点值怎么样,如果是val就会把head.next返回
    if(head.val == val)
        return head.next;
    else
        return head;
      
}

例如: 6->7->8->null 删除7 remove函数返回的是删除元素之后的链表。此时的链表就是:head + head.next(删除元素之后的链表); 此刻我们判断头结点head,如果是val 则会返回这个head.next给上一层; 如果不是val则会返回head给上一层,也就是原封不动

四、递归调用的代价

函数调用 + 系统栈的空间