〔Leetcode〕 1483. Kth Ancestor of a Tree Node (Hard)
[Leetcode] 1483. Kth Ancestor of a Tree Node (Hard)
概述
題目
https://leetcode.com/problems/kth-ancestor-of-a-tree-node/
給出一個 array 記錄 0 ~ n-1 個點的父點,設計出一 data structure 與 algorithm,可求出第 k 個祖父點
心得
經講解才知道是與有一種解法叫 Binary Lifting,其內容也不算太難,基本上就是用空間換取時間的標準作法,透過多存倍數祖父點來加快搜尋速度
Binary Lifting
思路
from 官神,每個子點都建立一定大小表格,其中分別放置第 1, 2, 4, 8, … 組向上祖父點,而後搜尋速度可加速
程式
1 | class TreeAncestor(object): |
Complexity
Time Complexity: O(n log n)
建立與查找皆是 O(n log n)
Space Complexity: O(n)
需有 n log n 個額外空間記錄其祖父點
此文章版權所有,如有轉載,請註明來自原作者,且未經同意,禁止截取