从尾到头打印链表。

从尾到头打印链表。
需要一个有顺序的数组去接收链表
这里我们用ArrayList

ArrayList<Integer>() aa=new ArrayList<>(); //设置ArrayList为Integer型

写一个aa去接收从链表尾的方法,接收参数是链表型ListNode head

void wei(ListNode head){
if(head==null){
return ;
}else{
wei(head.Next);    //这里用递归,从链表尾数先加上  
aa.add(head.val);//head.val是当前值
}
}

//比如(1,2,3)的链表,
会先用1.Next=2调用进去,//生成二楼,会调入2.next=3,并有一个aa.add(2.val),在一楼aa.add(1.val)方法前
//二楼调用2.next=3时,//生成三楼,会调入3.Next=null,并有一个aa.add(3.val),
在二楼aa.add(2.val)方法前,
//然后又调入3.Next=null时,//生成四楼,此时调入为空,在aa.add(3.val)方法前,
//四楼里的方法返回为空,结束,往楼下执行
//执行aa.add.(3.val),再往后
//执行aa.add.(2.val),再往后
//执行aa.add.(1.val),在一楼,aa.add.(1.val)后没有方法了,结束
//这时候aa={3,2,1},接收到了从尾到头的链表

先用aa用wei方法接收链表

wei(head);

创建结果返回的数组,长度为aa的长度

int []  rr=new int[aa.size()];

把aa一个一个传入rr数组

for(int i=0;i<rr.length;++i){
rr[i]=aa.get(i);

最后返回rr

return rr;

力扣上的代码为

class Solution {
    ArrayList<Integer> aa=new ArrayList<>();

    public int[] reversePrint(ListNode head) {
    wei(head);
    int [] rr=new int[aa.size()];
    for(int i=0;i<rr.length;++i){
        rr[i]=aa.get(i);
    }
    return rr;
}
void wei(ListNode head){
    if(head==null){
        return ;
    }else{
        wei(head.next);
        aa.add(head.val);
    }

}
}
上一篇:sql两种表联查更新的方法


下一篇:1·0天内跳空缺口的公式