#include #include using namespace std; struct ListNode { int val; ListNode* next; // ListNode(int x) : val(x), next(NULL) {} // ListNode(int x, ListNode* n = NULL) : val(x), next(n) {} }; class Solution { public: vector reversePrint(ListNode* head) { reverse(head); return (result); } private: vector result; void reverse(ListNode* head) { if (head != nullptr) { if (head->next != nullptr) { reversePrint(head->next); } result.push_back(head->val); } }; }; int main(int, char**) { ListNode* head = new ListNode(1); head -> next = new ListNode(3); head -> next -> next = new ListNode(2); Solution s; std::cout << s.reversePrint(head)[0] << s.reversePrint(head)[1] << s.reversePrint(head)[2] << std::endl; }