简介
- 思路1:直接遍历链表,存到数组后,利用数组逆序即可
- 思路2:链表+逆序 自然想到使用递归
C++版本:
//思路1:遍历
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
vector<int> v;
while(head)
{
v.push_back(head->val);
head = head->next;
}
reverse(v.begin(),v.end());
return v;
}
};
//思路2:递归
class Solution {
vector<int> nums;
public:
vector<int> reversePrint(ListNode* head) {
my_reverse(head);
return nums;
}
void my_reverse(ListNode* head)
{
if(!head)
return;
my_reverse(head->next);
nums.push_back(head->val);
}
};
python版本:
#思路1:遍历
class Solution(object):
def reversePrint(self, head):
num = []
while(head):
num.append(head.val)
head = head.next
num.reverse()
return num
#思路2:递归
class Solution:
def __init__(self):
self.nums = []
def reversePrint(self, head):
self.my_reverse(head)
return self.nums
def my_reverse(self,head):
if(not head):
return
self.my_reverse(head.next)
self.nums.append(head.val)
总结:对于链表和二叉树类型的题目,经常采取递归的方式,特别是题目出现逆序的情况下。