剑指Offer 06. 从尾到头输出链表
方法一 递归
递归实际上也是用了栈。
1 var reversePrint = function(head) { 2 let res = []; 3 const reverse = (head) => { 4 if(head == null) return; 5 reverse(head.next); 6 res.push(head.val); 7 } 8 reverse(head); 9 return res; 10 };
一行
1 /** 2 * Definition for singly-linked list. 3 * function ListNode(val) { 4 * this.val = val; 5 * this.next = null; 6 * } 7 */ 8 /** 9 * @param {ListNode} head 10 * @return {number[]} 11 */ 12 13 var reversePrint = function(head) { 14 return head == null ? [] : reversePrint(head.next).concat(head.val); 15 }
方法二 栈
使用了reverse()方法。
1 /** 2 * Definition for singly-linked list. 3 * function ListNode(val) { 4 * this.val = val; 5 * this.next = null; 6 * } 7 */ 8 /** 9 * @param {ListNode} head 10 * @return {number[]} 11 */ 12 13 var reversePrint = function(head) { 14 var stack = []; 15 while(head) { 16 stack.push(head.val); 17 head = head.next; 18 } 19 stack.reverse(); 20 return stack; 21 }

#
浙公网安备 33010602011771号