两个题均为递归算法的应用
直接使用题目给定的函数进行递归,注意写递归时先写终止递归的判断条件并且return开始回溯
def reversePrint(self, head: ListNode) -> List[int]:
if not head:return []
return self.reversePrint(head.next)+[head.val]
图片转自力扣
定义一个函数recur,两个参数,一个是当前节点一个是当前节点的前一个节点,初始时递归写null
上去依然是先写回溯条件,当第一个参数为null第二个参数为链表尾的节点时进行回溯,return一个5,然后回溯时可以得到下一个节点为第二个参数,进行添加后回溯。最终回溯到res的为头结点
res在此处的作用仅仅是为了返回结果,并不参与递归时值的变化
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
def fun(cur,pre):
if not cur: return pre
res = fun(cur.next,cur)
cur.next = pre
return res
return fun(head,None)