《剑指offer》编程题-逆序输出链表
#要求:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
#逆序输出链表,类似于经典的链表逆置题目 利用链表简单的特点,逐次向后递归即可,递归终止的条件是结点是否为空,到达最后一个节点时,再往后next,但已经null了,将最后一个存入arraylist,并逐步递归回去。
本题更像在考察arraylist的应用
#Java代码:
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> arrayList=new ArrayList<Integer>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode!=null){
this.printListFromTailToHead(listNode.next);
arrayList.add(listNode.val);
}
return arrayList;
}
}
附链表逆置并返回头结点的递归代码:
public Node Reverse(Node head)
{
if(head==null||head.next==null)
return head;
Node tmp=head.next;
Node newHead=Reverse(head.next);
tmp.next=head;
head.next=null;
return newHead;
}