输入一个链表的头节点,从尾到头打印链表每个节点的值。
1,逆序输出,即使用数据结构栈为先进后出特性,依次存储节点值,然后输出
private class ListNode{
int val;
ListNode next = null;
ListNode(int val){
this.val = val;
}
}
/**
* 使用栈结构正序弹入,逆序输出
* @param listNode
* @return
*/
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
LinkedList<Integer> stack = new LinkedList<>();
for (ListNode node = listNode; node != null;node = node.next){
stack.push(node.val);
}
return new ArrayList<>(stack);
}
将其他集合转化为ArrayList,直接使用无参构造方法
2,递归,树结构一般都可以选择递归节点
/**
* 递归一直到最后一个才开始添加
*/
private ArrayList<Integer> list = new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead1(ListNode listNode) {
if (listNode != null){
printListFromTailToHead1(listNode.next);
list.add(listNode.val);
}
return list;
}
网友评论