解題思路 : 考慮到一開始的 head 也可能是重複的一員 有可能會被移除 先做一個 dummy 在 head 前面保留此位置 以此 dummy 的下一個點來作為最後回傳 l...
解題思路 : 考慮到一開始的 head 也可能是重複的一員 有可能會被移除 先做一個 dummy 在 head 前面保留此位置 以此 dummy 的下一個點來作為最後回傳 l...
解題思路 : 利用 sort 好的 list 持續的二分法把 list 分左右兩半 正中央的數值存入 node 中 然後改動 head 的位置到下一個 ( pass by r...
解題思路 : 簡易的掃描只要任何一個 node 的下一個點 數值與他本身相同 就把下一個點刪掉 直接連到下下個點 一直到掃完整個 list 因為 head 可以永遠不被刪除 ...
解題思路 : 這題的陷阱是在出現重複的點的時候 要把存有這個值的所有點都刪掉 (包含第一個) 所以還是使用 dummy node 放在最前面連接原本的 head 來做 2 p...
解題思路 : 這題能復習到的地方很多 首先建立兩個 node 一個連接 val < x 的 node 另一個連接 val >= x 的 node 接著掃過 list 一遍把整...
解題思路 : 此類型題目 head 也有可能是被移除的候選人 最簡單的方法就是建立 dummy node 去連接 head 然後重設 head = dummy 接著就不用煩惱...
解題思路 : 兩種做法: 直接把所有 node 依照 inorder 順序存入 vector 然後設定一個 index 的紀錄點即可 利用 stack 一路存入 left ...
解題思路 : 兩種做法: BSF: 用 queue 實現 DFS: 加上一個 counter 來紀錄每次要儲存的值在第幾層 這個做法需要一開始就先知道 vector 的 s...
解題思路 : LCA 的第一題 沒有 parent pointer 所以回 true 的條件為1.root = A or root = B2.root 左邊跟 root 右邊...
解題思路 : 題目設計的路徑可以包涵 left + root + right 所以在記錄最大值的時候必須要比較 root->left(如果為正) 的最大值 + root + ...
解題思路 : test case 很賊會使用 INT_MAX 或是 INT_MIN 來測試 所以在 solution 1 的方法中 使用的邊界改成 LLONG_MIN 跟 ...
解題思路 : 先解決 root == nullptr 的問題 直接回傳 root之後判斷兩種狀況 p 點有 right child:這種情形 inorder 的下一個 suc...
解題思路 : 首先要先找到想移除的點 利用比較 target 跟當前檢查的 node value 比較 較大就往右子樹找 較小就往左子樹 直到找到為止 一旦找到之後 有三種可...
解題思路 : 基本靠 queue 解決兩個 function serialize:先把 root 放入 queue 在用 !Q.empty() 做為結束的條件執行 while...
解題思路 : recursive 作業順序: 往左檢查 left child 只要有符合 > k1 的 node 就繼續往左找更小的可能符合要求的點 檢查當前的點 如果數值 ...
解題思路 : 就是基本的 BFS 思路 利用 queue 來完成 level order traversal 然後把結果一層一層存到 result 中 最後在 reverse...
解題思路 : 跟普通找 LCA 的差別就是 題目給的 AB兩點可能根本不在樹裡面 所以另外設定 boolean 檢查是否真的找到 A 或 B 點 如果有一點沒找到的話 就從找...
解題思路 : 主要是 BFS 用 queue 來實現 level order traversal 只是其中多加了一個 boolean 變數來決定是否要反向放入某一層的數值 我...
解題思路 : 利用 post-order 的尾端找到 root 的值 再用 root 值去 inorder 找到 root 在 inorder 中的 index 接著用 in...
解題思路 : Back Track 可以解決但是效率不夠 同樣還是使用 DP 基本跟 Climbing Stairs I 相同 先預設好 step[0] = 1 ( 題目要求...