输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
首先说明一下列表的加法操作。
[1, 2, 3] + [4, 5, 6] = [1, 2, 3, 4, 5, 6]
class Solution:
def reversePrint(self, head: ListNode) -> List[int]:
if head:
return self.reversePrint(head.next) + [head.val]
else:
return []
看代码可知用的是递归思想。可以以数组的形式返回链表的全部值,这显而易见,但是为什么就满足了逆序这个要求呢?
根据判断条件可知,如果该节点是头部的话,就调用自身,再把头部接在列表的最后。所以,在前面的节点的值放在了后面,最后返回的最终结果也就是逆序的了。
用了判断语句的原因是防止链表是空的,造成错误。如果链表为空,就返回一个空列表