鏈結串列、樹與回溯
階段二從這裡開始,之後的每份題單都離不開遞迴。鏈結串列和二元樹是多數人第一次寫出「自己呼叫自己」的函式的地方,回溯則把同樣的想法延伸成把每個選擇都試一遍、再退回來。
五個章節從鏈結串列開始(像「反轉鏈結串列」這類題目),接著是二元樹、一般樹、回溯,最後是遞迴與分治。適合想先把遞迴寫到順手、再進入網格圖、動態規劃和圖論的人。
292 題難度分 1151–30185 章節
進入書房
想要有人陪你寫完這份題單嗎?登入後進入書房,女主角會一次拿一道題目給你。
一、Linked List
§1.1 遍歷Linked List
| 題目 | 難度分 |
|---|---|
| 1290. 二進制鏈表轉整數 | 1151 |
| 2058. 找出臨界點之間的最小和最大距離 | 1311 |
| 2181. 合併零之間的節點 | 1333 |
| 725. 分隔鏈表 | 未評分 |
| 817. 鏈表組件 | 1429 |
§1.2 刪除節點
| 題目 | 難度分 |
|---|---|
| 203. 移除鏈表元素 | 未評分 |
| 3217. 從鏈表中移除在數組中存在的節點 | 1342 |
| 83. 刪除排序鏈表中的重複元素 | 未評分 |
| 82. 刪除排序鏈表中的重複元素 II | 未評分 |
| 237. 刪除鏈表中的節點 | 未評分 |
| 1669. 合併兩個鏈表 | 1428 |
| 2487. 從鏈表中移除節點 | 1455 |
§1.3 插入節點
| 題目 | 難度分 |
|---|---|
| 2807. 在鏈表中插入最大公約數 | 1279 |
| 147. 對鏈表進行插入排序 | 未評分 |
§1.4 反轉Linked List
| 題目 | 難度分 |
|---|---|
| 206. 反轉鏈表 | 未評分 |
| 92. 反轉鏈表 II | 未評分 |
| 24. 兩兩交換鏈表中的節點 | 未評分 |
| 25. K 個一組翻轉鏈表 | 未評分 |
| 2074. 反轉偶數長度組的節點 | 1685 |
§1.5 前後pointer
| 題目 | 難度分 |
|---|---|
| 19. 刪除鏈表的倒數第 N 個結點 | 未評分 |
| 61. 旋轉鏈表 | 未評分 |
| 1721. 交換鏈表中的節點 | 1387 |
§1.6 fast-slow pointers
| 題目 | 難度分 |
|---|---|
| 876. 鏈表的中間結點 | 1232 |
| 2095. 刪除鏈表的中間節點 | 1324 |
| 234. 迴文鏈表 | 未評分 |
| 2130. 鏈表最大孿生和 | 1318 |
| 143. 重排鏈表 | 未評分 |
| 141. 環形鏈表 | 未評分 |
| 142. 環形鏈表 II | 未評分 |
| 457. 環形數組是否存在循環 | 未評分 |
§1.8 合併Linked List
| 題目 | 難度分 |
|---|---|
| 2. 兩數相加 | 未評分 |
| 445. 兩數相加 II | 未評分 |
| 2816. 翻倍以鏈表形式表示的數字 | 1394 |
| 21. 合併兩個有序鏈表 | 未評分 |
§1.9 Divide and Conquer
| 題目 | 難度分 |
|---|---|
| 23. 合併 K 個升序鏈表 | 未評分 |
| 148. 排序鏈表 | 未評分 |
§1.10 綜合應用
| 題目 | 難度分 |
|---|---|
| 1171. 從鏈表中刪去總和值為零的連續節點 | 1782 |
| 707. 設計鏈表 | 未評分 |
| 146. LRU 緩存 | 未評分 |
| 460. LFU 緩存 | 未評分 |
| 432. 全 O(1) 的數據結構 | 未評分 |
| 1206. 設計跳錶 | 未評分 |
§1.11 其他
| 題目 | 難度分 |
|---|---|
| 138. 隨機鏈表的複製 | 未評分 |
| 382. 鏈表隨機節點 | 未評分 |
| 430. 扁平化多級雙向鏈表 | 未評分 |
二、Binary Tree
§2.1 遍歷Binary Tree
| 題目 | 難度分 |
|---|---|
| 144. 二叉樹的前序遍歷 | 未評分 |
| 94. 二叉樹的中序遍歷 | 未評分 |
| 145. 二叉樹的後序遍歷 | 未評分 |
| 872. 葉子相似的樹 | 1288 |
| 404. 左葉子之和 | 未評分 |
| 671. 二叉樹中第二小的節點 | 未評分 |
§2.2 自頂向下 DFS(Preorder Traversal)
| 題目 | 難度分 |
|---|---|
| 104. 二叉樹的最大深度 | 未評分 |
| 111. 二叉樹的最小深度 | 未評分 |
| 112. 路徑總和 | 未評分 |
| 129. 求根節點到葉節點數字之和 | 未評分 |
| 199. 二叉樹的右視圖 | 未評分 |
| 1448. 統計二叉樹中好節點的數目 | 1360 |
| 1315. 祖父節點值為偶數的節點和 | 1427 |
| 988. 從葉結點開始的最小字符串 | 1429 |
| 1026. 節點與其祖先之間的最大差值 | 1446 |
| 1022. 從根到葉的二進制數之和 | 1462 |
| 623. 在二叉樹中增加一行 | 未評分 |
| 1372. 二叉樹中的最長交錯路徑 | 1713 |
| 971. 翻轉二叉樹以匹配先序遍歷 | 1787 |
§2.3 自底向上 DFS(Postorder Traversal)
| 題目 | 難度分 |
|---|---|
| 104. 二叉樹的最大深度 | 未評分 |
| 111. 二叉樹的最小深度 | 未評分 |
| 965. 單值二叉樹 | 1178 |
| 100. 相同的樹 | 未評分 |
| 101. 對稱二叉樹 | 未評分 |
| 951. 翻轉等價二叉樹 | 1477 |
| 1379. 找出克隆二叉樹中的相同節點 | 未評分 |
| 110. 平衡二叉樹 | 未評分 |
| 226. 翻轉二叉樹 | 未評分 |
| 617. 合併二叉樹 | 未評分 |
| 2331. 計算布爾二叉樹的值 | 1304 |
| 508. 出現次數最多的子樹元素和 | 未評分 |
| 563. 二叉樹的坡度 | 未評分 |
| 606. 根據二叉樹創建字符串 | 未評分 |
| 2265. 統計值等於子樹平均值的節點數 | 1473 |
| 1026. 節點與其祖先之間的最大差值 | 1446 |
| 3319. 第 K 大的完美二叉子樹的大小 | 1603 |
| 1339. 分裂二叉樹的最大乘積 | 1675 |
| 1372. 二叉樹中的最長交錯路徑 | 1713 |
| 1145. 二叉樹著色遊戲 | 1741 |
| 572. 另一棵樹的子樹 | 未評分 |
| 1530. 好葉子節點對的數量 | 1746 |
§2.4 自底向上 DFS:刪點
| 題目 | 難度分 |
|---|---|
| 814. 二叉樹剪枝 | 1380 |
| 1325. 刪除給定值的葉子節點 | 1407 |
| 1110. 刪點成林 | 1511 |
§2.5 有遞有歸
| 題目 | 難度分 |
|---|---|
| 538. 把二叉搜索樹轉換為累加樹 | 未評分 |
| 1038. 從二叉搜索樹到更大和樹 | 1375 |
| 865. 具有所有最深節點的最小子樹 | 1534 |
| 1080. 根到葉路徑上的不足節點 | 1805 |
§2.6 Binary Tree的直徑
| 題目 | 難度分 |
|---|---|
| 543. 二叉樹的直徑 | 未評分 |
| 687. 最長同值路徑 | 未評分 |
| 124. 二叉樹中的最大路徑和 | 未評分 |
| 2385. 感染二叉樹需要的總時間 | 1711 |
§2.7 Backtracking
| 題目 | 難度分 |
|---|---|
| 257. 二叉樹的所有路徑 | 未評分 |
| 113. 路徑總和 II | 未評分 |
| 1457. 二叉樹中的偽迴文路徑 | 1405 |
| 437. 路徑總和 III | 未評分 |
§2.8 Lowest Common Ancestor (LCA)
| 題目 | 難度分 |
|---|---|
| 235. 二叉搜索樹的最近公共祖先 | 未評分 |
| 236. 二叉樹的最近公共祖先 | 未評分 |
| 1123. 最深葉節點的最近公共祖先 | 1607 |
| 2096. 從二叉樹一個節點到另一個節點每一步的方向 | 1805 |
§2.9 Binary Search Tree
§2.10 創建Binary Tree
| 題目 | 難度分 |
|---|---|
| 108. 將有序數組轉換為二叉搜索樹 | 未評分 |
| 998. 最大二叉樹 II | 1498 |
| 1008. 前序遍歷構造二叉搜索樹 | 1563 |
| 1382. 將二叉搜索樹變平衡 | 1541 |
| 2196. 根據描述創建二叉樹 | 1644 |
| 105. 從前序與中序遍歷序列構造二叉樹 | 未評分 |
| 106. 從中序與後序遍歷序列構造二叉樹 | 未評分 |
| 889. 根據前序和後序遍歷構造二叉樹 | 1732 |
| 1028. 從先序遍歷還原二叉樹 | 1797 |
§2.11 插入/刪除節點
| 題目 | 難度分 |
|---|---|
| 701. 二叉搜索樹中的插入操作 | 未評分 |
| 450. 刪除二叉搜索樹中的節點 | 未評分 |
| 669. 修剪二叉搜索樹 | 未評分 |
§2.12 Tree DP
| 題目 | 難度分 |
|---|---|
| 337. 打家劫舍 III | 未評分 |
| 968. 監控二叉樹 | 2124 |
§2.13 Binary Tree BFS
| 題目 | 難度分 |
|---|---|
| 102. 二叉樹的層序遍歷 | 未評分 |
| 103. 二叉樹的鋸齒形層序遍歷 | 未評分 |
| 107. 二叉樹的層序遍歷 II | 未評分 |
| 199. 二叉樹的右視圖 | 未評分 |
| 513. 找樹左下角的值 | 未評分 |
| 515. 在每個樹行中找最大值 | 未評分 |
| 637. 二叉樹的層平均值 | 未評分 |
| 1161. 最大層內元素和 | 1250 |
| 993. 二叉樹的堂兄弟節點 | 1288 |
| 2583. 二叉樹中的第 K 大層和 | 1374 |
| 1302. 層數最深葉子節點的和 | 1388 |
| 2415. 反轉二叉樹的奇數層 | 1431 |
| 1609. 奇偶樹 | 1438 |
| 623. 在二叉樹中增加一行 | 未評分 |
| 2471. 逐層排序二叉樹所需的最少操作數目 | 1635 |
| 2641. 二叉樹的堂兄弟節點 II | 1677 |
| 919. 完全二叉樹插入器 | 1691 |
| 958. 二叉樹的完全性檢驗 | 1703 |
| 863. 二叉樹中所有距離為 K 的結點 | 1663 |
| 662. 二叉樹最大寬度 | 未評分 |
§2.14 Linked List+Binary Tree
| 題目 | 難度分 |
|---|---|
| 114. 二叉樹展開為鏈表 | 未評分 |
| 1367. 二叉樹中的鏈表 | 1650 |
| 109. 有序鏈表轉換二叉搜索樹 | 未評分 |
| 116. 填充每個節點的下一個右側節點指針 | 未評分 |
| 117. 填充每個節點的下一個右側節點指針 II | 未評分 |
§2.15 N 叉樹
| 題目 | 難度分 |
|---|---|
| 589. N 叉樹的前序遍歷 | 未評分 |
| 590. N 叉樹的後序遍歷 | 未評分 |
| 559. N 叉樹的最大深度 | 未評分 |
| 429. N 叉樹的層序遍歷 | 未評分 |
| 427. 建立四叉樹 | 未評分 |
| 558. 四叉樹交集 | 未評分 |
§2.16 其他
| 題目 | 難度分 |
|---|---|
| 1261. 在受汙染的二叉樹中查找元素 | 1440 |
| 1104. 二叉樹尋路 | 1545 |
| 987. 二叉樹的垂序遍歷 | 1676 |
| 655. 輸出二叉樹 | 未評分 |
| 979. 在二叉樹中分配硬幣 | 1709 |
| 222. 完全二叉樹的節點個數 | 未評分 |
| 297. 二叉樹的序列化與反序列化 | 未評分 |
| 449. 序列化和反序列化二叉搜索樹 | 未評分 |
| 331. 驗證二叉樹的前序序列化 | 未評分 |
| 652. 尋找重複的子樹 | 未評分 |
| 173. 二叉搜索樹迭代器 | 未評分 |
| 2049. 統計最高分的節點數目 | 1912 |
| 2673. 使二叉樹所有路徑值相等的最小代價 | 1917 |
| 2509. 查詢樹中環的長度 | 1948 |
| 2458. 移除子樹後的二叉樹高度 | 2299 |
三、一般樹
§3.1 遍歷
| 題目 | 難度分 |
|---|---|
| 2368. 受限條件下可到達節點的數目 | 1477 |
| 1466. 重新規劃路線 | 1634 |
§3.2 自頂向下 DFS
| 題目 | 難度分 |
|---|---|
| 1376. 通知所有員工所需的時間 | 1561 |
| 3528. 單位轉換 I | 1580 |
| 1443. 收集樹上所有蘋果的最少時間 | 1683 |
| 1377. T 秒後青蛙的位置 | 1824 |
| 3067. 在帶權樹網絡中統計可連接服務器對數目 | 1909 |
| 3372. 連接兩棵樹後最大目標節點數目 I | 1927 |
| 2467. 樹上最大得分和路徑 | 2053 |
| 3373. 連接兩棵樹後最大目標節點數目 II | 2162 |
| 1766. 互質樹 | 2232 |
| 2791. 樹中可以形成迴文的路徑數 | 2677 |
§3.3 自底向上 DFS
| 題目 | 難度分 |
|---|---|
| 690. 員工的重要性 | 未評分 |
| 3249. 統計好節點的數目 | 1566 |
| 1519. 子樹中標籤相同的節點數 | 1809 |
| 3558. 給邊賦權值的方案數 I | 1845 |
| 3593. 使葉子路徑成本相等的最小增量 | 1959 |
| 2872. 可以被 K 整除連通塊的最大數目 | 1968 |
| 2477. 到達首都的最少油耗 | 2012 |
| 2973. 樹中每個節點放置的金幣數目 | 2277 |
| 2440. 創建價值相同的連通塊 | 2460 |
§3.4 有遞有歸
| 題目 | 難度分 |
|---|---|
| 3593. 使葉子路徑成本相等的最小增量 | 1959 |
| 3331. 修改後子樹的大小 | 2046 |
§3.5 樹的直徑
| 題目 | 難度分 |
|---|---|
| 2246. 相鄰字符不同的最長路徑 | 2126 |
| 3203. 合併兩棵樹後的最小直徑 | 2266 |
| 1617. 統計子樹中城市之間最大距離 | 2309 |
| 2538. 最大價值和與最小價值和的差值 | 2398 |
§3.6 樹的Topological Sort
| 題目 | 難度分 |
|---|---|
| 310. 最小高度樹 | 未評分 |
| 2603. 收集樹中金幣 | 2712 |
§3.7 DFS 時間戳
| 題目 | 難度分 |
|---|---|
| 3515. 帶權樹中的最短路徑 | 2312 |
| 2322. 從樹中刪除邊的最小分數 | 2392 |
| 3327. 判斷 DFS 字符串是否是迴文串 | 2454 |
| 3590. 第 K 小的路徑異或和 | 2646 |
§3.8 Lowest Common Ancestor (LCA)、Binary Lifting
| 題目 | 難度分 |
|---|---|
| 1483. 樹節點的第 K 個祖先 | 2115 |
| 3559. 給邊賦權值的方案數 II | 2146 |
| 3553. 包含給定路徑的最小帶權子樹 II | 2411 |
| 3585. 樹中找到帶權中位節點 | 2429 |
| 2846. 邊權重均等查詢 | 2508 |
| 2646. 最小化旅行的價格總和 | 2238 |
§3.9 樹上Sliding Window
| 題目 | 難度分 |
|---|---|
| 3425. 最長特殊路徑 | 2435 |
| 3486. 最長特殊路徑 II | 2925 |
§3.10 樹上Small-to-Large Merging
| 題目 | 難度分 |
|---|---|
| 2003. 每棵子樹內缺失的最小基因值 | 2415 |
| 3590. 第 K 小的路徑異或和 | 2646 |
| 3575. 最大好子樹分數 | 2360 |
§3.11 Centroid Decomposition
| 題目 | 難度分 |
|---|---|
| 3372. 連接兩棵樹後最大目標節點數目 I | 1927 |
§3.12 其他
| 題目 | 難度分 |
|---|---|
| 2867. 統計樹中的合法路徑數目 | 2428 |
| 2421. 好路徑的數目 | 2445 |
| 1719. 重構一棵樹的方案數 | 3018 |
四、Backtracking
§4.1 入門Backtracking
| 題目 | 難度分 |
|---|---|
| 17. 電話號碼的字母組合 | 未評分 |
§4.2 子集型Backtracking
| 題目 | 難度分 |
|---|---|
| 78. 子集 | 未評分 |
| 1863. 找出所有子集的異或總和再求和 | 1372 |
| 784. 字母大小寫全排列 | 1342 |
| 3566. 等積子集的劃分方案 | 1459 |
| 2044. 統計按位或能得到最大值的子集數目 | 1568 |
| 2397. 被列覆蓋的最多行數 | 1719 |
| 1239. 串聯字符串的最大長度 | 1720 |
| 2212. 射箭比賽中的最大得分 | 1869 |
| 1255. 得分最高的單詞集合 | 1882 |
| 2151. 基於陳述統計最多好人數 | 1980 |
| 2597. 美麗子集的數目 | 2023 |
| 2959. 關閉分部的可行集合數目 | 2077 |
| 1601. 最多可達成的換樓請求數目 | 2119 |
| 1617. 統計子樹中城市之間最大距離 | 2309 |
§4.3 劃分型Backtracking
| 題目 | 難度分 |
|---|---|
| 131. 分割回文串 | 未評分 |
| 2698. 求一個整數的懲罰數 | 1679 |
| 1593. 拆分字符串使唯一子字符串的數目最大 | 1740 |
| 1849. 將字符串拆分為遞減的連續值 | 1747 |
| 93. 復原 IP 地址 | 未評分 |
| 140. 單詞拆分 II | 未評分 |
§4.4 組合型Backtracking
| 題目 | 難度分 |
|---|---|
| 77. 組合 | 未評分 |
| 216. 組合總和 III | 未評分 |
| 1286. 字母組合迭代器 | 1591 |
| 22. 括號生成 | 未評分 |
| 301. 刪除無效的括號 | 未評分 |
§4.5 排列型Backtracking
| 題目 | 難度分 |
|---|---|
| 46. 全排列 | 未評分 |
| 3376. 破解鎖的最少時間 I | 1793 |
| 51. N 皇后 | 未評分 |
| 52. N 皇后 II | 未評分 |
| 2850. 將石頭分散到網格圖的最少移動次數 | 2001 |
| 1718. 構建字典序最大的可行序列 | 2080 |
| 1307. 口算難題 | 2250 |
| 37. 解數獨 | 未評分 |
§4.6 有重複元素的Backtracking
| 題目 | 難度分 |
|---|---|
| 90. 子集 II | 未評分 |
| 40. 組合總和 II | 未評分 |
| 491. 非遞減子序列 | 未評分 |
| 47. 全排列 II | 未評分 |
| 1079. 活字印刷 | 1741 |
| 3646. 下一個特殊迴文數 | 2445 |
| 2014. 重複 K 次的最長子序列 | 2558 |
§4.7 搜索
| 題目 | 難度分 |
|---|---|
| 3211. 生成不含相鄰零的二進制字符串 | 1353 |
| 967. 連續差相同的數字 | 1433 |
| 2094. 找出 3 位偶數 | 1455 |
| 1415. 長度為 n 的開心字符串中字典序第 k 小的字符串 | 1576 |
| 1219. 黃金礦工 | 1663 |
| 79. 單詞搜索 | 未評分 |
| 980. 不同路徑 III | 1830 |
| 2002. 兩個迴文子序列長度的最大乘積 | 1869 |
| 1255. 得分最高的單詞集合 | 1882 |
| 3669. K 因數分解 | 1917 |
| 473. 火柴拼正方形 | 未評分 |
| 212. 單詞搜索 II | 未評分 |
| 638. 大禮包 | 未評分 |
| 126. 單詞接龍 II | 未評分 |
| 691. 貼紙拼詞 | 未評分 |
| 2056. 棋盤上有效移動組合的數目 | 2611 |
| 2386. 找出數組的第 K 大和 | 2648 |
| 3509. 最大化交錯和為 K 的子序列乘積 | 2703 |
| 488. 祖瑪遊戲 | 未評分 |
§4.8 折半枚舉
| 題目 | 難度分 |
|---|---|
| 805. 數組的均值分割 | 1983 |
| 494. 目標和 | 未評分 |
| 3566. 等積子集的劃分方案 | 1459 |
| 1755. 最接近目標值的子序列和 | 2364 |
| 956. 最高的廣告牌 | 2381 |
| 2035. 將數組分成兩個數組並最小化數組和的差 | 2490 |
| 3267. 統計近似相等數對 II | 2545 |
五、其他Recursion/Divide and Conquer
五、其他Recursion/Divide and Conquer
| 題目 | 難度分 |
|---|---|
| 3537. 填充特殊網格 | 1542 |
| 912. 排序數組 | 未評分 |
| 880. 索引處的解碼字符串 | 2011 |
| 3307. 找出第 K 個字符 II | 2232 |
| 1545. 找出第 N 個二進制字符串中的第 K 位 | 1479 |
| 3614. 用特殊操作處理字符串 II | 2011 |
| 932. 漂亮數組 | 2294 |
這是階段二的第一份題單;路線建議在「字串與自動機」之後進入,但簽訂學習契約時直接選它,也能從這裡開始。
難度分數來自 zerotrac 的 LeetCode 競賽評分。部分題目沒有 zerotrac 分數,會標示為「未評分」。
進入書房