从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
List<Integer> list = new ArrayList<>();
public int[] reversePrint(ListNode head) {
recur(head);
//把list转化为数组
int[] res = new int[list.size()];
for (int i = 0; i < list.size() ; i++) {
res[i] = list.get(i);
}
return res;
}
/**
* 思路:每次先传进去head,判断是否为空,
* 再递归调用head.next(此时就会一直调用recur直到recur(参数为最后一个节点的next)),
* 然后return,然后开始回溯,最后一个节点的val加入到list中,直到head节点输出。调用结束
* @param head 头节点
*/
public void recur(ListNode head){
if (head == null) return;
recur(head.next);
list.add(head.val);
}