117. Populating Next Right Pointers in Each Node II
題目網址:https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/
題意:給一 BT, 其中每一個 node 的定義如下:
將每個 node 的
next指向其右邊的 node。若不存在右邊的 node, 則next應指向NULL。
所有next預設皆為NULL。進階:
- 設計 $O(1)$ space 的演算法
- 可以使用遞迴解題, 遞迴所用到的 stack space 不算做額外的 space

Solution 1:
想法:利用 BFS
class Solution { |
- time:$O(n)$ ➔ 每個 node 被遍歷一次
- space:$O(n)$ ➔ 撇除要返回的
res, 在 while loop 迭代的過程中,q的元素個數不超過n
Solution 2:
想法:用 iterative + pointer 的方式將 space 降到 $O(1)$
dummy永遠指向第N + 1的第一個 nodecur由左至右遍歷第N層, 而nxt拜訪第N + 1層 node 的前一個 node當
cur遍歷第N層的時候,nxt會一邊串接起第N + 1層的nextpointer。遍歷完第N層的時候, 意味著第N + 1層也已經透過nextpointer 串接起來了, 這時候cur再往第N + 1層移動
class Solution { |
- time:$O(n)$ ➔ 每個 node 被遍歷一次
- space:$O(1)$ ➔ 只需常數空間
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Zako's Blog!
評論
