剑指 Offer 06. 从尾到头打印链表

easy

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

示例 1:

1
2
输入:head = [1,3,2]
输出:[2,3,1]

辅助栈

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// 辅助栈
func reversePrint(head *ListNode) []int {
	var stack []int
	for p := head; p != nil; p = p.Next {
		stack = append(stack, p.Val)
	}
	var result []int
	for i := len(stack) - 1; i >= 0; i-- {
		result = append(result, stack[i])
	}
	return result
}

递归

1
2
3
4
5
6
7
// 递归
func reversePrint(head *ListNode) []int {
	if head == nil {
		return []int{}
	}
	return append(reversePrint(head.Next), head.Val)
}