剑指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 }

 

posted @ 2021-09-01 19:04  雪之下。  阅读(42)  评论(0)    收藏  举报