Tree
LeetCode 2385: Amount of Time for Binary Tree to Be Infected
·1 分鐘
LeetCode
Medium
Hash-Table
Tree
Depth-First-Search
Breadth-First-Search
Binary-Tree
LeetCode 2385 解題筆記:把樹轉成無向圖,從 start 做 BFS,層數減一就是分鐘數
LeetCode 834: Sum of Distances in Tree
·2 分鐘
LeetCode
Hard
Dynamic-Programming
Tree
Depth-First-Search
Graph
Dp-on-Trees
LeetCode 834 解題筆記:換根 DP:先以 0 為根算子樹大小和 ans[0],再用 ans[child] = ans[parent] - size + (n - size) 推到每個節點
LeetCode 968: Binary Tree Cameras
·1 分鐘
LeetCode
Hard
Dynamic-Programming
Tree
Depth-First-Search
Binary-Tree
Dp-on-Trees
LeetCode 968 解題筆記:後序貪心,每個節點三種狀態:有相機、被覆蓋、沒被覆蓋;有小孩沒被覆蓋才放相機,最後根沒被覆蓋要補一台
LeetCode 889: Construct Binary Tree from Preorder and Postorder Traversal
·1 分鐘
LeetCode
Medium
Array
Hash-Table
Divide-and-Conquer
Tree
Binary-Tree
LeetCode 889 解題筆記:stack 存目前這條路徑,堆頂等於 postorder 的下一個就代表子樹完成要 pop;新節點先接左邊
LeetCode 863: All Nodes Distance K in Binary Tree
·1 分鐘
LeetCode
Medium
Hash-Table
Tree
Depth-First-Search
Breadth-First-Search
Binary-Tree
LeetCode 863 解題筆記:先把樹轉成無向圖(補上往父節點的邊),再從 target BFS 走 k 步
LeetCode 437: Path Sum III
·1 分鐘
LeetCode
Medium
Tree
Depth-First-Search
Binary-Tree
LeetCode 437 解題筆記:樹上的前綴和 + 雜湊表:先查 prefix - target 再把自己加進去,離開節點時要扣回來
LeetCode 652: Find Duplicate Subtrees
·1 分鐘
LeetCode
Medium
Hash-Table
Tree
Depth-First-Search
Binary-Tree
LeetCode 652 解題筆記:後序把每棵子樹編碼,出現第二次時加入答案;字串編碼最差 O(n^2),改成 (值, 左 id, 右 id) 編號可到 O(n)
LeetCode 99: Recover Binary Search Tree
·1 分鐘
LeetCode
Medium
Tree
Depth-First-Search
Binary-Search-Tree
Binary-Tree
LeetCode 99 解題筆記:中序遍歷找逆序:第一次逆序的前一個、最後一次逆序的後一個,就是被交換的兩個節點
LeetCode 450: Delete Node in a BST
·1 分鐘
LeetCode
Medium
Tree
Binary-Search-Tree
Binary-Tree
LeetCode 450 解題筆記:找到節點後分三種情況:沒有小孩、一個小孩直接接上,兩個小孩用右子樹最小值替換再刪掉它
LeetCode 449: Serialize and Deserialize BST
·1 分鐘
LeetCode
Medium
String
Tree
Depth-First-Search
Breadth-First-Search
Design
Binary-Search-Tree
Binary-Tree
LeetCode 449 解題筆記:BST 只要存前序,不用空節點標記;反序列化帶著上下界遞迴,O(n)
LeetCode 331: Verify Preorder Serialization of a Binary Tree
·1 分鐘
LeetCode
Medium
String
Stack
Tree
Binary-Tree
LeetCode 331 解題筆記:數空位:一開始 1 個,每個節點用掉 1 個,非空節點再多出 2 個;中途不能變負,最後要剛好 0
LeetCode 297: Serialize and Deserialize Binary Tree
·1 分鐘
LeetCode
Hard
String
Tree
Depth-First-Search
Breadth-First-Search
Design
Binary-Tree
LeetCode 297 解題筆記:前序遍歷加上空節點標記就能唯一還原樹;反序列化用迭代器依序取值