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

95 阅读1分钟

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

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

 

方法一:一次循环,头插数组。

输入: head = [1,3,2]
输出: [2,3,1]
var reversePrint = function(head) {
    const arr = [];
    while(head) {
        arr.unshift(head.val);
        head = head.next;
    }
    return arr;
};

方法二:利用递归,递归的结束条件是若传入的节点为null,则输出一个空数组;利用先递归再为数组添加值的方法实现链表的倒叙打印。

    var reversePrint = function(head) {
        // 递归
        if(!head) return [];
        let arr = reversePrint(head.next);
        arr.push(head.val);
        return arr;
    };