面試題32 - I. 從上到下列印二叉樹
阿新 • • 發佈:2022-03-19
做題思路 or 感想:
1,用雙指標法便可解決
2,這種連結串列的題自己畫一下圖就很快理解了,相當有意思啊
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode() : val(0), next(nullptr) {} 7 * ListNode(int x) : val(x), next(nullptr) {} 8 * ListNode(int x, ListNode *next) : val(x), next(next) {}9 * }; 10 */ 11 class Solution { 12 public: 13 ListNode* reverseList(ListNode* head) { 14 if (head == nullptr)return nullptr; //防止奇怪的測試用例 15 ListNode* slow = nullptr; //初始化兩個指標 16 ListNode* fast = head; 17 while (fast != nullptr) { 18 ListNode* temp = fast->next; //用temp儲存後面的方向,防止後面的指標丟失方向 19 fast->next = slow; //快節點指向後面(反轉),然後快慢指標同時向前走一個節點的位置 20 slow = fast; 21 fast = temp; 22 } 23 return slow; //最後fast為nullptr,得到的slow固然是新的頭節點了 24 } 25 };