题目:
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
思路一:利用栈先入后出的特性完成
思路二:存下来然后进行数组翻转
思路三:利用递归
思路一实现代码:
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function printListFromTailToHead(head)
{
// write code here
var res = [];//new an array to save result as a stack
while(head){//find the last node
res.unshift(head.val);//save nodes as reverse order
head = head.next;
}
return res;
}
思路二实现代码:
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function printListFromTailToHead(head)
{
// write code here
var res = [];//new an array to save result as a stack
while(head){//find the last node
res.push(head.val);//save nodes as reverse order
head = head.next;
}
var temp = res.slice(0);//copy the array
temp.reverse();
return temp;
}
思路三实现代码:
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
var res = [];//new an array to save result as a stack
function printListFromTailToHead(head)
{
// write code here
if(res.length!=0) res.length=0;
if(head!=null){
if(head.next!=null){//find the last node
printListFromTailToHead(head.next);
}
res.push(head.val);
}
return res;
}