- 反转链表
递归思路:
通过递归反转函数,把头结点传到最后,然后再往前走
class Solution {
public ListNode reverseList(ListNode head) {
if(head==null||head.next==null){
return head;
}else{
ListNode p = reverseList(head.next);
//当开始执行下面的代码后,p并不是指向的是最后一个结点,p指向的是尾部更新好的一段链表
head.next.next = head;
head.next = null;
return p;
}
}
}
- 两两交换链表中的节点
递归方法:
class Solution {
public ListNode swapPairs(ListNode head) {
//递归,第一步判断
if(head==null||head.next==null){
return head;
}else{
ListNode next = head.next;
head.next = swapPairs(next.next);
next.next = head;
return next;
}
}
}
流程图:
刚开始刷题,太生了
每次看到别人写递归,我都感觉自己是个傻子。。。