863. All Nodes Distance K in Binary Tree
題目網址:https://leetcode.cn/problems/all-nodes-distance-k-in-binary-tree/
題意:給一 BT 的
root, 和一目標點target, 以及一整數k。返回所有距離目標點
target為k的 node, 可以用任何順序返回。tree 中每個
node.val都不同。


Solution:
想法:利用 DFS + BFS
- 先用 DFS 建立無向圖
- 再以
target為中心向外做 BFSe.g.
target = 5,k = 2
- 以
5為中心, 首先取出 3, 6, 2- 然後 3 會取出 5, 1
- 依此類推…
這邊必須小心, 因為我們建立的是無向圖, child 的 adj list 中是會有 parent 的
以上面的為例, 3 向外擴散取出 5 跟 1。其中 1 是答案, 但 5 不是
因此, 得用一個visited來記錄拜訪過的 node
- 若已經在
visited裡則跳過- 否則, 將其加入
visited中這樣一來, 5 最一開始就會被加入到
visited中
就算後面的 node 有跟 5 相鄰, 也不會把 5 加入到 res 中
class Solution { |
- time:$O(n)$ ➔ 每個 node 皆被遍歷常數次
- space:$O(n)$ ➔ 撇除要返回的
res, 在 while loop 迭代的過程中,q的元素個數不超過n
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Zako's Blog!
評論
